ARTIX-7 XC7A35T实验项目之流水灯

这篇具有很好参考价值的文章主要介绍了ARTIX-7 XC7A35T实验项目之流水灯。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

刷题推荐

链接: Verilog刷题

1,实验简介

通过LED流水灯实验,熟悉vivado软件开发FPGA的基本流程。包括器件选择、设置、代码的编写、编译、分配管脚、下载、程序FLASH固化烧录等。

2,实验环境

vivado 2019.1
黑金AX7035开发板

3,实验原理

3.1,LED硬件电路

ARTIX-7 XC7A35T实验项目之流水灯
ARTIX-7 XC7A35T实验项目之流水灯
从原理图可以看出,FPGA的IO输出低电平点亮LED,输出高电平LED熄灭。

4,程序设计

FPGA的设计中通常使用计数器来计时,对于50MHZ的系统时钟,一个时钟周期是20ns,那么表示1秒需要50_000_000个时钟周期。

4.1,vivado工程创建

1,打开vivado,在IDE里双击Create Project,如下图:
ARTIX-7 XC7A35T实验项目之流水灯

2,弹出一个vivado的工程向导,点击Next;
3,在弹出的对话框中输入工程名和工程存放的目录,工程可以选择自定义一个文件夹存放,这里取一个led_test的工程名,点击Next;
ARTIX-7 XC7A35T实验项目之流水灯

4,在下面的对话框中默认选择RTL Project,因为这里使用Verilog行为描述语言来编程。下面的Do not specify source at this time 的勾也可以打上。如果不打上,下一步会进入添加source file界面;
ARTIX-7 XC7A35T实验项目之流水灯

5,进入添加source file 界面,这里先不添加任何设计文件,点击Next;
6,提示是否添加已有的约束文件,这里约束文件也没有设计,所以不添加;
7,选择所用的FPGA器件,以及进行配置。首先在Family栏里选择Artix - 7,Speed grade栏选择-2,在Package栏选择fgg484,然后在下面列表中选择xc7a35tfgg484-2,单击Next
ARTIX-7 XC7A35T实验项目之流水灯

8,再次确认板子型号是否正确,没有问题点击Finish完成工程创建。

4.2,编写流水灯的Verilog代码

1,点击Project Manager下的Add Sources图标;
ARTIX-7 XC7A35T实验项目之流水灯

2,选择Add or create design sources,点击Next;
ARTIX-7 XC7A35T实验项目之流水灯

3,点击Add Files可以添加源文件,点击AddDirectories可以按目录添加源文件,因为还没设计程序,所以点击Create File按钮;
ARTIX-7 XC7A35T实验项目之流水灯

在弹出的对话框里选择File type是Verilog,File name是led_test,点击OK,点击Finish;
ARTIX-7 XC7A35T实验项目之流水灯

4,向导会提示定义I/O端口,可以在后面编写,单击OK,单击Yes。这时在Project Mannager界面下的Design Sources已经有了一个led_test.v文件,并自动成为项目的top模块;
ARTIX-7 XC7A35T实验项目之流水灯

5,编写代码,control+s保存好代码;

`timescale 1ns / 1ps
module LED_test
(
    input sys_clk,      //system clock 50MHZ on board
    input rst_n,        //reset low active
    output [3:0] led    //LED use of control the LED signal on board
); 

reg [31:0] timer;
reg [3:0] led;
//==============================
/cle counter : from 0 to 4 sec
//==============================
always @(posedge sys_clk or posedge rst_n)
    begin
        if(~rst_n)
            timer <= 32'd0;                 //when the reset signal valid,time counter clearing
        else if(timer == 32'd199_999_999)   //4 seconds count(50M * 4 - 1 = 199_999_999)
            timer <= 32'd0;                 //count done,clearing the time counter
        else
            timer <= timer + 1'b1;          //timer counter = timer counter + 1
     end
//==============================
//LED control
//==============================
always @(posedge sys_clk or posedge rst_n)
    begin
        if(~rst_n)
            led <= 4'b1111;
        else if(timer == 32'd49_999_999)
            led <= 4'b0111;
        else if(timer == 32'd99_999_999)
            led <= 4'b1011;
        else if(timer == 32'd149_999_999)
            led <= 4'b1101;
        else if(timer == 32'd199_999_999)
            led <= 4'b1110;
    end
 
ila ila_inst
( 
    .clk(sys_clk),
    .probe0(timer),
    .probe1(led)
);
endmodule

4.3,添加XDC管脚约束文件

4.3.1,添加LED管脚约束

1,点击RTL Analysis下的Open Elaboratred Design图标;
ARTIX-7 XC7A35T实验项目之流水灯

2,在I/O Ports添加I/O口和时钟、复位口的引脚,如果在栏目找不到,到菜单栏单击Window,选择I/O Ports。将原理图的I/O写入,复位引脚在这里默认低电平复位,将I/O口用一个按键替代即可;
ARTIX-7 XC7A35T实验项目之流水灯

3,control+s保存,在弹出的向导里File type 默认是XDC,Project name自定义,在这里是led,单击OK;
ARTIX-7 XC7A35T实验项目之流水灯

4.3.2,添加时钟约束

1,点击Synthesis下的Open Synthesized Design图标,选择Constranits Wizard,点击Next;
ARTIX-7 XC7A35T实验项目之流水灯

2,在Frequency栏下输入50,点击Skip to Finish,点击Finish;
ARTIX-7 XC7A35T实验项目之流水灯

3,打开xdc文件,会出现约束语句。
ARTIX-7 XC7A35T实验项目之流水灯

4.4,vivado仿真验证

可以用vivado自带的仿真工具来验证流水灯程序的结果
1,设置vivado的仿真配置,右击SIMULATION 中的Simulation Settings;
ARTIX-7 XC7A35T实验项目之流水灯

2,设置成需要的仿真时间,这里设置成50ms,单击OK;
ARTIX-7 XC7A35T实验项目之流水灯

3,添加激励测试文件,点击Project Manager下的Add Sources图标;
4,选择Add or create simulation sources,点击Next;
ARTIX-7 XC7A35T实验项目之流水灯

5,点击Create File生成仿真激励文件;
ARTIX-7 XC7A35T实验项目之流水灯

在弹出的对话框中输入激励文件的名字,这里为vtf_led_test,点击Finish,点击OK,点击Yes;
ARTIX-7 XC7A35T实验项目之流水灯

6,编写仿真程序,control+s保存好代码;

`timescale 1ns / 1ps
module vtf_LED_test;
    reg sys_clk;
    reg rst_n;
    wire [3:0] led;
    
    LED_test uut
    (
        .sys_clk(sys_clk),
        .rst_n(rst_n),
        .led(led)
    );
    initial begin
        sys_clk = 0;
        rst_n = 0;
       
       #1000;
       rst_n = 1;
       #20000;
    end
    always #10  sys_clk = ~sys_clk;
endmodule

7,点击Run Simulation,再选择Run Behavioral Simulation,这里做一下行为级的仿真;
ARTIX-7 XC7A35T实验项目之流水灯

8,在弹出的仿真界面中可以选择双击uut,将timer拖动到Wave中观测timer的波形;
ARTIX-7 XC7A35T实验项目之流水灯

ARTIX-7 XC7A35T实验项目之流水灯

9,点击图标Restart复位一下,再点击Run All,可以看到仿真波形与设计相符;
ARTIX-7 XC7A35T实验项目之流水灯

4.5,下载和Flash固化

经过前面的编译和仿真,我们可以把bit文件下载到FPGA芯片中,看一下实际运行效果,下载程序之前先连接硬件,JTAG和开发板连接,开发板连接电源上电。
ARTIX-7 XC7A35T实验项目之流水灯

1,右击PROGRAM AND DEBUG ,单击Bitstream Setting;
ARTIX-7 XC7A35T实验项目之流水灯

2,选择生成bin文件,点击OK,生成的bin文件在后面固化程序到Flash中会用到;
ARTIX-7 XC7A35T实验项目之流水灯

3,单击Generate Bitstream生成bit和bin文件;
ARTIX-7 XC7A35T实验项目之流水灯

4,点击Open Hardware Manager,点击Open Target->Auto Councet,在hardware界面下会显示xc7a35t_0图标,说明JTAG连接成功;
ARTIX-7 XC7A35T实验项目之流水灯

5,右键xc7a35t_0,选择Program Device,选择led_test生成的bit文件,点击Program烧写FPGA【掉电程序丢失】
ARTIX-7 XC7A35T实验项目之流水灯

6,右键xc7a35t_0,选择Add Configruation Memory Device,在弹出的对话框选择正确的FLASH型号,点击OK【掉电程序不丢失】;
ARTIX-7 XC7A35T实验项目之流水灯

ARTIX-7 XC7A35T实验项目之流水灯

7,提示是否对SPI FLASH进行编程,点击OK,在弹出的窗口中,Configration file选择vivado生成的bin文件【文件默认在imp1_1目录下】,点击OK;
ARTIX-7 XC7A35T实验项目之流水灯

8,想加快上电后程序启动,可以在xdc文件添加以下几行代码,目的是为了提高SPI FLASH的读写时钟,其中前面两条设置QSPI FLASH的数据宽度和配置模式,后面一条是配置速度,这个值越大,速度越快。修改好的xdc文件需要重新编译,再次重新生成bit和bin文件。文章来源地址https://www.toymoban.com/news/detail-481135.html

set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design]
set_property CONFIG_MODE SPIx4 [current_design]
set_property BITSTREAM.CONFIG.CONFIGRATE 50 [current_design]

到了这里,关于ARTIX-7 XC7A35T实验项目之流水灯的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 实验 6 流水灯设计

    6.1 实验目的 编 写 Verilog HDL 代 码 驱 动 开 发 板 上 10 颗 LED 实现流水灯效果 6.2 实 验 仪 器 与 器 材 1. EDA 开发软件 一 套 2.微机 一 台 3.实验开发系统 一 台 4.打印机 一 台 5.其他器件与材料 若 干 6.3 实 验 说 明 1、 10 位的流水灯,从左到右流水,每隔 500ms 流动一下

    2024年01月16日
    浏览(39)
  • 【C51基础实验 LED流水灯】

    前言: 前几篇学会了LED驱动原理,并且成功点亮了一颗LED和实现了LED的闪烁,那么这篇紧接着就来解锁LED的新功能,LED流水灯。当然这里前提是基于肉眼余晖可见光达成的效果。 开发板上 LED 模块电路原理图如下图所示: 看上图中 LED 采用共阳接法 ,D1-D8 连接到单片机的

    2024年02月10日
    浏览(37)
  • 实验(二)基于BASYS3平台的FPGA流水灯实验

    枯藤老树昏鸦,小桥流水人家。                                   — — — —《天净沙.秋思》马致远 文章目录   前言 一、实验内容 二、实验平台 三、设计思路与方案 四、RTL代码设计 五、仿真测试程序设计 六、电路与仿真结果 七、管脚规划 八、板子上电演示 总结

    2024年02月03日
    浏览(39)
  • S5PV210 | 裸机汇编LED流水灯实验

    目录 S5PV210 | 裸机汇编LED流水灯实验 开发板: 1.原理图 2.Datasheet相关 3.代码 3-1. 代码实现(流水灯,仅作演示) 3-2.工具 mkv210_image 代码 4.运行 SD卡启动 5.参考 上图中,当按下 POWER 键后, VDD_5V 和 VDD_IO 会产生 5V 和 3.3V 的电压,其中 D26 无须 GPIO 控制,为常亮状态,即我们所说的

    2024年02月03日
    浏览(40)
  • FPGA-DE2-115-实验一-亮度可调流水灯

    前言: 本文主要介绍了集成电路EDA这门课程的相关实验及代码。使用的软件是Quartus Ⅱ,该实验使用fpga芯片为cyclone IV EP4CE115F29C7。 (1)熟悉流水灯的工作原理; (2)了解设计中的优化方案; (3)进一步掌握PWM信号的设计; 利用FPGA板及4个LED发光二极管,设计一个亮度可调

    2024年02月04日
    浏览(50)
  • 使用Proteus 8.9仿真STM32F103流水灯实验

    STM32流水灯程序非常简单,在我的实验中使用GPIOC的引脚连接流水灯。主要程序如下: LED初始化:led.h  led.c test.c文件,main主函数:  工程目录如下,记得包含头文件。工程链接在文末。  编译生成.hex文件即可,接下来绘制仿真电路。 打开Proteus 点击新建工程。 我将工程保存

    2024年02月04日
    浏览(66)
  • FPGA综合设计实验:基于PWM脉宽调制的呼吸流水灯设计

    目录 一、引言 二、项目准备 1.项目预期目标 2.项目原理及总体实现思路

    2024年02月13日
    浏览(58)
  • 「FPGA项目」—— 基于AMBA总线的流水灯控制系统

    本文将介绍一个完全用Verilog HDL手写的AMBA片上系统, 项目的主题是设计一个 基于AMBA总线的流水灯控制系统 , 项目中所有数字逻辑电路部分都不会通过调用成熟IP核的方式来实现,而是通过Verilog进行RTL设计, 然后利用Vivado平台对RTL模型进行仿真、综合与布线, 最后在FPGA开

    2023年04月25日
    浏览(47)
  • STM32单片机 超入门项目:流水灯(不同闪烁模式和速度)

    流水灯通过交替闪烁实现灯光流动的效果,本篇将分析如何采用STM32单片机实现流水灯。 STM32单片机(STM32F103RCT6)、发光二极管 4(我用的是七彩快闪,用红绿蓝LDE自行搭配也可)、1k电阻 4、面包板飞线等自备。 打开STM32CubeMX,选择型号STM32F103RCT6,配置调试器PinoutConfigurati

    2023年04月09日
    浏览(39)
  • ​ 模拟嵌入式边缘计算卡设计方案:367-XC7Z100 板卡 基于zynq XC7Z100 FMC接口通用计算平台

    基于zynq XC7Z100 FMC接口通用计算平台 北京太速科技板卡由SoC XC7Z100-2FFG900I芯片来完成卡主控及数字信号处理,XC7Z100内部集成了两个ARM Cortex-A9核和一个kintex 7的FPGA,通过PL端FPGA扩展FMC、光纤、IO等接口,PS端ARM扩展网络、USB、RS232等接口。板卡适应于图像处理、震动、通信、雷达

    2024年02月11日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包