vivado_实验指导书
VIVADO入门指导_建立microblaze工程_V100_201702

Xilinx Vivado入门指导建立microblaze工程:从硬件平台到软件设计目的本文旨在引导新手熟悉Vivado环境并建立简单的microblaze工程(包含硬件和软件部分)。
硬件环境GVI Kintex 7 FPGA connectivity board(Xilinx XCK325T-2FFG676 FPGA)。
其他Xilinx开发平台请根据实际情况作相应更改,不过Vivado只支持Xilinx 7 系列以后的器件,故对于其他FPGA本文不具有参考价值。
连接Xilinx JTAG调试器,连接电源,烧录前打开电源开关。
软件环境Vivado 2015.2详细步骤一、建立硬件平台1. 打开Vivado,点击Creat New Project打开工程向导。
2.点击Next,修改项目名称和路径,本文以microblaze_system_test作为项目名称,点击Next。
3. 选择第一个RTL Project,点击Next。
4. 选择FPGA器件,根据实际硬件选择,选中后点击Next,然后点击Finish。
5. Vivado开发界面如下图,关注一下红框部分以熟悉界面。
6.点击Flow Navigator中IP Integrator -> Create Block Diagram,出现下图,输入设计名称,其他默认,点击OK。
7. 在右侧Diagram 框中点击Add IP图标。
8.搜索Microblaze,双击添加。
9.点击Run Block Automation10. 更改Debug Module:Debug & UART(因为要用到JTAG UART),点击OK。
11. 可以点一下Regenerate Layout 工具进行重新布局。
12.手动添加时钟和复位引脚。
在clk_wiz_1模块左边CLK_IN_D端单击鼠标右键-> Make External,同样在reset端make external;移动鼠标指针到rst_clk_wiz_1_100M 模块的ext_reset_in引脚,出现一支笔的记号,按住鼠标左键并拖动连接到reset引脚。
学习VivadoHLS第4章 例程中文版

学习Vivado第4章lab1——接口综合概述接口综合是将RTL接口添加到C设计的过程。
另外还把物理接口添加到RTL设计中,接口综合包括了相关联的I/O 协议,容许数据通过接口传输并自动与内部优化的逻辑同步。
本教程由4实验练习组成涵盖的主要功能和接口综合。
•Lab1: 查看函数的返回和块级协议•Lab2: 理解默认端口的I/O协议,并学会怎么选择I/O协议•Lab3: 查看一下数组端口实现,可以进行分区。
•Lab4: 为设计创建一个优化的实现并添加AXI4接口教程设计描述从xilinx网站下载教程的设计文件,参考信息中获取教程设计。
本教程使用教程目录中的设计文件Vivado_HLS_Tutorial\ Interface_Synthesis。
关于实验•使用前两个实验室在本教程中的示例的设计很简单,这有助于将焦点保持在接口。
•最后两个实验练习使用多通道累加器。
•本教程介绍如何实现采用高层次综合实现I/O端口和协议。
•在实验4中,创建一个在Lab3中使用最优实现的设计接口综合lab1:块级I/O协议概述这个实验解释了什么是块级I/O协议,并控制它们重点:在本教程中的图片和命令假定了教程数据目录Vivado_HLS_Tutorial被解压并放置在c:\vivado_HLS_Tutorial如果教程数据路径解压到不同的位置,或者在linux系统上,调整路径名称指向你选择放置Vivado_HLS_Tutorial目录位置。
步骤1:创建并打开工程1.打开Vivado HLS 命令提示符a.在windows系统中,采用Start>All Programs>Xilinx Design Tools>Vivado2014.2>Vivado HLS>Vivado HLS 2014.2 Command Prompt,如下图b.在linux系统下,打开新的shell,2. 用命令提示符窗口,如图55,把接口综合教程的路径变为lab13. 执行TCL并建立vivado HLS Project,采用的是vivado_hls–f run_hls.tcl如图55所示4. 当vivado HLS 完成,在用户界面里打开工程。
vivado使用手册

Vivado是一款由Xilinx公司开发的集成开发环境(IDE),主要用于FPGA的设计和开发。
以下是Vivado的基本使用手册:
1. 打开Vivado软件,创建一个新工程:点击“Create New Project”,在弹出的界面上填写工程名并选择保存位置。
在选择工程类型时,选择RTL Project(一般为RTL工程)。
2. 在新工程中添加源文件:在新建的工程中,右键点击工程名,选择“Add Sources”来添加Verilog源文件。
在弹出的对话框中选择“OK”和“Yes”完成设计文件的新建。
3. 编写代码:在Sources文件夹中双击新建的设计文件,即可在右边的代码编辑区进行代码的编写。
4. 运行仿真:在编写完代码后,需要进行仿真测试。
在工程名上右键选择“New Run Block”,选择仿真语言为混合语言,然后点击“OK”。
在仿真界面中设置仿真参数,然后点击“Run”开始仿真。
5. 生成比特流:在仿真通过后,需要生成比特流文件以便将设计烧录到FPGA芯片中。
在工程名上右键选择“Generate Bitstream”,在弹出的界面中选择目标语言为Verilog,然后点击“OK”。
等待生成比特流文件的完成。
6. 下载到FPGA:将生成的比特流文件下载到FPGA芯片中进行实际测试。
可以使用Vivado提供的Tcl命令或者第三方工具进行下载。
以上是Vivado的基本使用流程,具体操作可能会根据不同的版本和实际需求有所不同。
建议参考Xilinx提供的官方文档和教程进行学习。
【培训】vivado实现一个工程

Vivado实现一个工程
南京航空航天大学
电工电子实验教学中心
2015.3
目录
一、认识Basys3开发套件
二、实现一个全加器
一、认识Basys3开发套件
参照Basys3实验指导手册-v1.0
二、实现一个全加器
新建一个工程
点击next
输入工程名(字幕或下划线开头),选择工程路径(注意不要有中文),next
Next
选择器件,xc7a35tcpg236-1(若选择其他器件,我们申请的license可能不支持),next
Finish
点击add sources
选择Add or Create Design Sources,next
Create File
输入文件名,OK
Finish
设置I/O名称和方向,OK
双击adder.v打开程序设计窗口
编写语句assign {co,s}=a+b+c;保存,点击run synthesis
综合完成后,弹出对话框中选择
结束之后,弹出对话框选择
选择I/O planning,展开相应管脚
分配引脚,查看basys3开发板手册,分配到对应引脚。
这里改成LVCMOS33,将管脚设置成3.3V输出。
分配好引脚之后,点击
完成之后选择
完成之后选择,注意:后续操作需要连接开发板
Enjoy it!。
Vivado设计流程实验报告

Vivado设计流程一、实验目的与实验要求1、实验目的本实验的目的是熟悉实验环境,学习如何使用Vivado 2015.4创建、综合、实现、仿真等功能。
2、实验要求(1)学习Vivado-Design-Flow.pdf、约束文件.ppt,在实验报告中回答以下问题:a) 描述Vivado 的设计流程b) 什么是网表c) 什么是约束文件?通过IO planning 完成的是什么方面的约束?d) Vivado 设计流程中,Synthesis 的作用是什么?e) Vivado 设计流程中,Implementation 的作用是什么?(2)在实验报告中提交上述实验内容的Verilog 代码、仿真结果图、RTL 详细设计图(参考Vivado-Design-Flow.pdf 第11 页Open Elaborated Design—>Schematic)、综合实现图(参考Vivado-Design-Flow.pdf 第13 页Open Synthesized Design—>Schematic)以及实验现象图(照片);(3)提交实验报告和完整的工程文件。
二、实验设备(环境)及要求(1)Xilinx Ego1实验平台。
(2)OS:Win7 64位(3)Software:Vivado15.4开发工具三、实验内容与步骤(1)实验内容a)学习视频,了解Vivado设计流程和功能:“EGO五分钟快速上手.mp4”和“EGo五分钟搭建你的数字积木.mp4”。
b)按照“Ego五分钟快速上手——流水灯.pdf”完成流水灯实验。
c)学习Vivado-Design-Flow.pdf、约束文件.ppt,回答问题。
(2)主要步骤a)在Vivado中创建RTL设计,新建一个名为vivado_design_flow的空白工程。
b)模块代码如下:module flowing_light(input clk,input rst,output [15:0] led);reg[23:0]cnt_reg;reg[15:0]light_reg;always@(posedge clk)beginif(rst)cnt_reg<=0;elsecnt_reg<=cnt_reg+1;endalways@(posedge clk)beginif(rst)light_reg<=16'h0001;else if (cnt_reg == 24'hffffff)beginif(light_reg == 16'h8000)light_reg<=16'h0001;elselight_reg<=light_reg<<1;endendassign led = light_reg;endmodulec)RTL门级结构图:图1: RTL门级结构图d)综合Run Synthesis实现图图2:综合最终设计图e)添加约束文件,按照对应管脚,综合、实现进行管脚约束:set_property PACKAGE_PIN F6 [get_ports {led[15]}]set_property PACKAGE_PIN G4 [get_ports {led[14]}]set_property PACKAGE_PIN G3 [get_ports {led[13]}]set_property PACKAGE_PIN J4 [get_ports {led[12]}]set_property PACKAGE_PIN H4 [get_ports {led[11]}]set_property PACKAGE_PIN J3 [get_ports {led[10]}]set_property PACKAGE_PIN J2 [get_ports {led[9]}]set_property PACKAGE_PIN K2 [get_ports {led[8]}]set_property PACKAGE_PIN K1 [get_ports {led[7]}]set_property PACKAGE_PIN H6 [get_ports {led[6]}]set_property PACKAGE_PIN H5 [get_ports {led[5]}]set_property PACKAGE_PIN J5 [get_ports {led[4]}]set_property PACKAGE_PIN K6 [get_ports {led[3]}]set_property PACKAGE_PIN L1 [get_ports {led[2]}]set_property PACKAGE_PIN M1 [get_ports {led[1]}]set_property PACKAGE_PIN K3 [get_ports {led[0]}]set_property PACKAGE_PIN P17 [get_ports clk]set_property PACKAGE_PIN R15 [get_ports rst]set_property IOSTANDARD LVCMOS33 [get_ports {led[15]}] set_property IOSTANDARD LVCMOS33 [get_ports {led[14]}] set_property IOSTANDARD LVCMOS33 [get_ports {led[13]}] set_property IOSTANDARD LVCMOS33 [get_ports {led[12]}] set_property IOSTANDARD LVCMOS33 [get_ports {led[11]}] set_property IOSTANDARD LVCMOS33 [get_ports {led[10]}] set_property IOSTANDARD LVCMOS33 [get_ports {led[9]}] set_property IOSTANDARD LVCMOS33 [get_ports {led[8]}] set_property IOSTANDARD LVCMOS33 [get_ports {led[7]}] set_property IOSTANDARD LVCMOS33 [get_ports {led[6]}] set_property IOSTANDARD LVCMOS33 [get_ports {led[5]}] set_property IOSTANDARD LVCMOS33 [get_ports {led[4]}] set_property IOSTANDARD LVCMOS33 [get_ports {led[3]}] set_property IOSTANDARD LVCMOS33 [get_ports {led[2]}] set_property IOSTANDARD LVCMOS33 [get_ports {led[1]}] set_property IOSTANDARD LVCMOS33 [get_ports {led[0]}] set_property IOSTANDARD LVCMOS33 [get_ports clk]set_property IOSTANDARD LVCMOS33 [get_ports rst]f)测试激励仿真代码:module test( );reg clk;reg rst;wire [3 : 0] led;flowing_light u0(.clk(clk),.rst(rst),.led(led) );parameter PERIOD = 10;always beginclk = 1'b0;#(PERIOD/2) clk = 1'b1;#(PERIOD/2);endinitial beginclk = 1'b0;rst = 1'b0;#100;rst = 1'b1;#100;rst = 1'b0;endendmodule进行行为仿真,得到并验证波形图g)添加时序约束,设置clock的最大和最小的delay timeh)最后进行综合,生成比特流文件,加载到板子上进行调试分析。
Vivado实验01_流水灯仿真实验及下板步骤

一、新建工程1. 打开Vivado ,界面如下:2. 点击上述界面中的Create New Project ,弹出新建工程向导,依次点击Next:3.板卡选项分别为Family: Artix-7Sub-Family: Artix-7Package: csg324Speed grade: -1Temp grade: C于是,Part选择xc7a100tcsg324-1,然后下一步点击Next Finish;二、设计文件输入1.如下图,点击输入设计程序:2.如下图,选择新建文件,依次创建4个verilog文件,文件名依次为:clock_div; ctc; s_74ls138; led_light注意:最后一个为顶层文件,文件名与项目的文件名相同,且所有名称中不能出现中文、空格和符号3.双击打开,然后输入依次设计程序:注意:每次输入一个设计程序最好保存一次,保存操作如下图然后重复步骤,将4个设计程序依次输入保存4.添加仿真文件:5.进入仿真,点击 Run Simulation Run Behavioral Simulation6.调节缩小按钮,将间隔调节为1s,方便观察实验结果,然后点击上方运行按钮进行仿真,接着点击弹出的信息条的Background将其隐藏,即可看到完整的仿真循环结果7.仿真结果如下图:三、下板操作1.仿真完成后,先关闭仿真,操作如下图:2.接着进行下一步综合,如下图操作:3.综合处成功后,要进行实现操作,如下图:4.实现成功后进行下一步,管脚约束,操作如下图:注意:此处需用到板卡手册,请使用老师群共享的文件“Nexys4-DDR_rm”,此为配适的较新版本,否则可能出现错误5.约束文件生成后,更改为I/O操作界面:6.此处不能使用默认电压值,否则会报错,更改电压值为,然后将时钟引脚接至E3,复位引脚接至C12,y0至y7输出接至V16、T15、U14、T16、V15、V14、V15、V11,引脚的连接方式有三种,所有操作如下图:7.约束完成后,关闭保存:8.在源程序文档中的约束文件中可以看到刚才操作生成的约束文件,也可以直接在约束文件中直接输入代码来完成管教的约束和更改:9.约束完成后,生成编程文件:10.此时需要连接板卡到电脑,在此之前需要对板卡进行设置:11.连接电脑,打开电源开关,等待驱动安装完成后,打开Hardware Manager Open a new hardware target 在跳出的提示框中一直点击Next,不需更改,直到Finish Program device 选择板卡xc7a100t_0 在跳出的选择框中点击ok,这时就可以观察到仿真结果中的流水灯效果,以上为识别板卡到把编程文件下载到板卡的无脑操作,具体步骤请看下图:12.观察到板卡上的实验结果正确后,实验到此结束,关闭板卡的电源开关,拔出板卡,以上。
VivadofifoIP完整例程(包括testbench)

VivadofifoIP完整例程(包括testbench)⽹上尽管有各种介绍fifo的⽂章,但⼤部分没有⼀个完整的例程来练习,这⾥给出能够完整演⽰的fifo例程和仿真分析。
⼯程⽂件虽然部分基于xilinx的官⽅例程,但官⽅例程没有testbench,这部分是⾃⼰编写的,并对不同的配置进⾏了分析,完整的⼯程⽂件见如果没有分数下载,认真看本篇,也能做出来。
实验⼀⾃编fifo主程序module Asyn_FIFO#(parameter WIDTH = 8,parameter DEPTH = 4)(input clk_wr,input clk_rd,input rst_n_rd,input rst_n_wr,input wr_en,input rd_en,input [WIDTH-1:0] data_wr,output [WIDTH-1:0] data_rd,output reg rd_empty,output reg wr_full);//definationreg [WIDTH-1 : 0] mem [0 : (1<<DEPTH)-1]; //2^DEPTH numbersreg [DEPTH : 0] wp, rp;reg [DEPTH : 0] wr1_rp, wr2_rp, rd1_wp, rd2_wp;reg [DEPTH : 0] wbin, rbin;wire [DEPTH-1 : 0] waddr, raddr;wire [DEPTH : 0] wbin_next, rbin_next; //bincodewire [DEPTH : 0] wgray_next, rgray_next; //graycodewire rd_empty_val, wr_full_val;//outputassign data_rd = mem[raddr];//inputalways@(posedge clk_wr)if(wr_en && !wr_full)mem[waddr] <= data_wr;/*----------generate waddr and raddr-------------------------*///gen raddr and read gray codealways@(posedge clk_rd or negedge rst_n_rd)if(!rst_n_rd){rbin, rp} <= 0;else{rbin, rp} <= {rbin_next, rgray_next};assign raddr = rbin[DEPTH-1 : 0];assign rbin_next = rbin + (rd_en & ~rd_empty);assign rgray_next = rbin_next ^ (rbin_next >> 1);//gen waddr and write gray codealways@(posedge clk_wr or negedge rst_n_wr)if(!rst_n_wr){wbin, wp} <= 0;elseelse{wbin, wp} <= {wbin_next, wgray_next};assign waddr = wbin[DEPTH-1 : 0];assign wbin_next = wbin + (wr_en & ~wr_full);assign wgray_next = wbin_next ^ (wbin_next >> 1);/*---------------synchro rp and wp--------------------------*///synchro rpalways@(posedge clk_wr or negedge rst_n_wr)if(!rst_n_wr){wr2_rp, wr1_rp} <= 0;else{wr2_rp, wr1_rp} <= {wr1_rp, rp}; //delay two clock//synchro wpalways@(posedge clk_rd or negedge rst_n_rd)if(!rst_n_rd){rd2_wp, rd1_wp} <= 0;else{rd2_wp, rd1_wp} <= {rd1_wp, wp};/*---------------empty and full flags--------------------------*///gen rd_emptyassign rd_empty_val = (rd2_wp == rgray_next);always@(posedge clk_rd or negedge rst_n_rd)if(!rst_n_rd)rd_empty <= 1'b1;elserd_empty <= rd_empty_val;//gen wr_full, two high bit do not equalassign wr_full_val = ({~wr2_rp[DEPTH : DEPTH-1], wr2_rp[DEPTH-2 : 0]} == wgray_next); always@(posedge clk_wr or negedge rst_n_wr)if(!rst_n_wr)wr_full <= 1'b0;elsewr_full <= wr_full_val;endmoduletb程序module Asyn_FIFO_tb;parameter WIDTH = 8;reg clk_wr;reg clk_rd;reg rst_n_rd;reg rst_n_wr;reg [WIDTH-1:0] data_wr;reg wr_en;wire wr_full;wire [WIDTH-1:0] data_rd;reg rd_en;wire rd_empty;Asyn_FIFO fifo_inst(.clk_wr(clk_wr),.rst_n_rd(rst_n_rd),.rst_n_wr(rst_n_wr),.wr_en(wr_en),.data_wr(data_wr),.clk_rd(clk_rd),.rd_en(rd_en),.data_rd(data_rd),.rd_empty(rd_empty),.wr_full(wr_full));initial beginrst_n_rd = 0;rst_n_wr = 0;clk_wr = 0;clk_rd = 0;wr_en = 0;rd_en = 0;#20rst_n_rd = 1;rst_n_wr = 1;#80wr_en = 1;rd_en = 0;#335wr_en = 0;rd_en = 1;endalways #10 clk_wr = ~clk_wr;always #20 clk_rd = ~clk_rd;/* always @(posedge clk_rd)rd_en <= ($random) % 2;always @(posedge clk_wr)wr_en <= ($random) % 2; */always @(posedge clk_wr)data_wr <= ($random) % 256; endmodule将simulate.runtime时间改为1500ns实验⼆调⽤已IP库fifo, 编写testbench, 参考xilinx下⾯的官⽅例程,但⾃⼰编写testbench.双击FIFO下⾯的选项Component Name输⼊char_fifo, Fifo Implementation选Independent Clocks Block RAM.注意这⾥选的是保持Leave Out of context per IP选择, 双击Generate button.⾄此⽣成fifo IP.下⾯制作testbench,拷贝第57⾄63⾏到testbench tb_fifo.v例化char_fifo your_instance_name (.rst(rst), // input wire rst.wr_clk(wr_clk), // input wire wr_clk.rd_clk(rd_clk), // input wire rd_clk.din(din), // input wire [7 : 0] din.wr_en(wr_en), // input wire wr_en.rd_en(rd_en), // input wire rd_en.dout(dout), // output wire [7 : 0] dout.full(full), // output wire full.empty(empty), // output wire empty.wr_rst_busy(wr_rst_busy), // output wire wr_rst_busy.rd_rst_busy(rd_rst_busy) // output wire rd_rst_busy);从图上可以看到full信号拉低需要在复位信号410ns以后,重新修改testbench`timescale 1ns/1psmodule tb_fifo1;//***************************************************************************// Parameter definitions//***************************************************************************parameter WIDTH = 8;parameter DEPTH = 16;//inputsreg rst;reg wr_clk;reg rd_clk;reg [7:0] din;reg wr_en;reg rd_en;//outputswire [7:0] dout;wire full;wire empty;wire [3:0] rd_data_count;wire [3:0] wr_data_count;// Instantiate the Unitchar_fifo your_instance_name (.rst(rst), // input wire rst.wr_clk(wr_clk), // input wire wr_clk.rd_clk(rd_clk), // input wire rd_clk.din(din), // input wire [7 : 0] din.wr_en(wr_en), // input wire wr_en.rd_en(rd_en), // input wire rd_en.dout(dout), // output wire [7 : 0] dout.full(full), // output wire full.empty(empty), // output wire empty.rd_data_count(rd_data_count), // output wire [3 : 0] rd_data_count.wr_data_count(wr_data_count) // output wire [3 : 0] wr_data_count);always #10 wr_clk = ~wr_clk;always #20 rd_clk = ~rd_clk;initial begininitial begin// Initialize Inputswr_clk = 0;rd_clk = 0;rst = 1;din = 1'b1;wr_en = 0;rd_en = 0;// Wait 100 ns for global reset to finish#100rst = 0;#500;repeat (18) beginwr_en = 1;#20;wr_en = 0;#20;din = din + 1'b1;end#290repeat (18) beginrd_en = 1;#40;rd_en = 0;#40;endendendmodule选Standard FIFO时,有效读写深度是15写得时候,din是输⼊,所以不与rd_clk时钟对齐,读的时候是时钟打得出去,所以dout与时钟rd_clk对齐。
学习VivadoHLS第4章 例程中文版

学习Vivado第4章lab1——接口综合概述接口综合是将RTL接口添加到C设计的过程。
另外还把物理接口添加到RTL设计中,接口综合包括了相关联的I/O 协议,容许数据通过接口传输并自动与内部优化的逻辑同步。
本教程由4实验练习组成涵盖的主要功能和接口综合。
•Lab1: 查看函数的返回和块级协议•Lab2: 理解默认端口的I/O协议,并学会怎么选择I/O协议•Lab3: 查看一下数组端口实现,可以进行分区。
•Lab4: 为设计创建一个优化的实现并添加AXI4接口教程设计描述从xilinx网站下载教程的设计文件,参考信息中获取教程设计。
本教程使用教程目录中的设计文件Vivado_HLS_Tutorial\ Interface_Synthesis。
关于实验•使用前两个实验室在本教程中的示例的设计很简单,这有助于将焦点保持在接口。
•最后两个实验练习使用多通道累加器。
•本教程介绍如何实现采用高层次综合实现I/O端口和协议。
•在实验4中,创建一个在Lab3中使用最优实现的设计接口综合lab1:块级I/O协议概述这个实验解释了什么是块级I/O协议,并控制它们重点:在本教程中的图片和命令假定了教程数据目录Vivado_HLS_Tutorial被解压并放置在c:\vivado_HLS_Tutorial如果教程数据路径解压到不同的位置,或者在linux系统上,调整路径名称指向你选择放置Vivado_HLS_Tutorial目录位置。
步骤1:创建并打开工程1.打开Vivado HLS 命令提示符a.在windows系统中,采用Start>All Programs>Xilinx Design Tools>Vivado2014.2>Vivado HLS>Vivado HLS 2014.2 Command Prompt,如下图b.在linux系统下,打开新的shell,2. 用命令提示符窗口,如图55,把接口综合教程的路径变为lab13. 执行TCL并建立vivado HLS Project,采用的是vivado_hls–f run_hls.tcl如图55所示4. 当vivado HLS 完成,在用户界面里打开工程。
电子系统设计实验指导书(FPGA基础篇Vivado版)

实验指导书(FPGA 基础篇 Vivado 版)
东南大学 电子科学 ........................................................................................................................................................... 1
安全使用规范
东南大学 电子科学与工程学院
无论何时,外部电源供电与 USB 两种供电方式只能用其中一种,避免因为电压有所差别而烧坏电路板。 采用电压高于5.5V的任何电源连接器可能造成永久性的损害。 插拔接插件前请关闭电路板总开关,否则易损坏器件。 电路板应在绝缘平台上使用,否则可能引起电路板损坏。 不同编码机制不要混接。 安装设备需防止静电。 液晶显示器件或模块结雾时,不要通电工作,防止电极化学反应,产生断线。 遇到正负极连接时需谨慎,避免接反引起开发板的损坏。 保持电路板的表面清洁。 小心轻放,避免不必要的硬件损伤。
实验目的 ....................................................................................................................................................... 17 实验内容 ....................................................................................................................................................... 17 实验要求 ....................................................................................................................................................... 17 实验步骤 ....................................................................................................................................................... 17 实验结果 ....................................................................................................................................................... 22
数字钟试验设计指导试验目的掌握基于diagram的vivado工程设计流程1.doc

数字钟试验设计指导试验目的掌握基于diagram的vivado工程设计流程1数字钟实验设计指导一、实验目的掌握基于diagram的vivado工程设计流程,学会添加IP目录并调用其中IP二、实验原理介绍本实验实现了一个简单的数字钟,能实现计时的功能。
由于数码管只有4位,因此本数字钟只能计分和秒。
本系统的逻辑部分主要由74系列的IP构成。
三、实验步骤:1、创建新工程1)打开Vivado2014.4设计开发软件,选择Create New Project.2)在弹出的创建新工程的界面中,点击Next,开始创建新工程。
3)在Project Name界面中,将工程名称修改为Digital_Clock,并设置好工程存放路径。
同时勾选上创建工程子目录的选项。
这样,整个工程文件都将存放在创建的Digital_Clock子目录中。
点击Next。
specify sources at this time(不指定添加源文件)勾选上。
点击Next。
5)在器件板卡选型界面中,在Search栏中输入xc7a35tcpg236搜索本次实验所使用的Basys3板卡上的FPGA芯片。
并选择xc7a35tcpg236-1器件。
(器件命名规则详见xilinx官方文档)点击Next。
工程的创建。
2、添加已设计好的IPcore。
工程建立完毕,我们需要将Digital_Clock这个工程所需的IP目录文件夹复制到本工程文件夹下。
本工程需要两个IP目录:74LSXX_LIB与Interface。
74LSXX_LIB和Interface都位于B3_Lab\Lab1\Digital_Clock下。
添加完后的本工程文件夹如下图:1)在Vivado设计界面的左侧设计向导栏中,点击Project Manager目录下的Project Setting。
2)在Project Setting界面中,选择IP选项,进入IP设置界面。
点击Add Respository...添加本工程文件夹下的IP_Catalog目录:3)完成目录添加后,可以看到所需IP已经自动添加。
Vivado实验流水灯仿真实验及下板步骤

一、新建工程1.打开Vivado2014.2,界面如下:2.点击上述界面中的CreateNewProject,弹出新建工程向导,依次点击Next:3.板卡选项分别为Family:Artix-7Sub-Family:Artix-7Package:csg324Speedgrade:-1Tempgrade:C于是,Part选择xc7a100tcsg324-1,然后下一步点击Next✍Finish;二、设计文件输入1.如下图,点击输入设计程序:2.如下图,选择新建文件,依次创建4个verilog文件,文件名依次为:clock_div;ctc;s_74ls138;led_light注意:最后一个为顶层文件,文件名与项目的文件名相同,且所有名称中不能出现中文、空格和符号3.双击打开,然后输入依次设计程序:注意:每次输入一个设计程序最好保存一次,保存操作如下图然后重复步骤,将4个设计程序依次输入保存4.添加仿真文件:5.进入仿真,点击RunSimulation✍RunBehavioralSimulation6.调节缩小按钮,将间隔调节为1s,方便观察实验结果,然后点击上方运行按钮进行仿真,接着点击弹出的信息条的Background将其隐藏,即可看到完整的仿真循环结果7.仿真结果如下图:三、下板操作1.仿真完成后,先关闭仿真,操作如下图:2.接着进行下一步综合,如下图操作:3.综合处成功后,要进行实现操作,如下图:4.实现成功后进行下一步,管脚约束,操作如下图:注意:此处需用到板卡手册,请使用老师群共享的文件“Nexys4-DDR_rm”,此为配适的较新版本,否则可能出现错误5.约束文件生成后,更改为I/O操作界面:6.此处不能使用默认电压值,否则会报错,更改电压值为3.3V,然后将时钟引脚接至E3,复位引脚接至C12,y0至y7输出接至V16、T15、U14、T16、V15、V14、V15、V11,引脚的连接方式有三种,所有操作如下图:7.约束完成后,关闭保存:8.在源程序文档中的约束文件中可以看到刚才操作生成的约束文件,也可以直接在约束文件中直接输入代码来完成管教的约束和更改:9.约束完成后,生成编程文件:10.此时需要连接板卡到电脑,在此之前需要对板卡进行设置:11.连接电脑,打开电源开关,等待驱动安装完成后,打开HardwareManager✍Openanewhardwaretarget✍在跳出的提示框中一直点击Next,不需更改,直到Finish✍Programdevice✍选择板卡xc7a100t_0✍在跳出的选择框中点击ok,这时就可以观察到仿真结果中的流水灯效果,以上为识别板卡到把编程文件下载到板卡的无脑操作,具体步骤请看下图:12.观察到板卡上的实验结果正确后,实验到此结束,关闭板卡的电源开关,拔出板卡,以上。
学习VivadoHLS第5章 例程中文版

学习Vivado第5章lab1——任意精度类型概述C / C+ +提供的数据类型被固定为8位边界•char(8-bit)•short(16-bit)•in(32-bit)•longlong(64-bit)•float(32-bit)•double(64-bit)•精确宽度的整数类型,如int16_t(16位)和int32_t(32位)当创建硬件时,经常在一些例子中要求更高精度的位宽。
例如,一个输入为12位的滤波器,累积的结果最大范围只要求27位,用标准C数据类型的硬件设计会导致不必要的硬件成本。
比精确类型要求更多LUT和寄存器的操作延迟甚至超过时钟周期,因此需要更多的周期来计算结果Vivado高层次综合(HLS)提供了许多位准确或任意精度的数据类型,可以让你模拟使用任何(任意)宽度的变量。
本教程由两个实验练习组成:• Lab1 –综合使用浮点类型的设计和查看结果。
本设计采用标准C+ +浮点类型。
• Lab2 –综合在lab1中使用同样的功能但使用任意精度合适类型,突出在精度和结果的优点。
这次演习显示了同样的设计如何可以转换到VivadoHLSap_fixed类型,保留所要求的精度,但创造一个更优化的硬件实现。
教程设计描述从xilinx网站下载教程设计文件,在教程设计中查看信息。
教程所用的设计文件在教程目录vivado_HLS_Tutorial\Arbitary\Precision任意精度:Lab1任意精度Lab1:查看采用的标准C/C++类型设计在这个lab中,您用标准的C类型综合设计,您用此设计作为一个参考,为lab2使用任意精度类型的设计的参考。
重要:在教程中的图片和命令假设教程数据路径vivado_HLS_Tutorial被解压放置在c:\vivado_HLS_Tutorial中。
如果教程数据目录解压缩到不同的位置,或者在Linux系统上,调整一些路径名引用到的位置您选择放置Vivado_HLS_Tutorial目录。
电子系统设计实验指导书(FPGA基础篇Vivado版)

实验四:状态机 ..................................................................................................................................................... 17 一、 二、 三、 四、 实验目的 ....................................................................................................................................................... 24 实验内容 ....................................................................................................................................................... 24 实验要求 ....................................................................................................................................................... 24 实验步骤 ....................................................................................................................................................... 24
电子系统设计实验指导书(FPGA基础篇Vivado版)

东南大学 电子科学与工程学院
安全使用规范
无论何时,外部电源供电与 USB 两种供电方式只能用其中一种,避免因为电压有所差别而烧坏电路板。 采用电压高于5.5V的任何电源连接器可能造成永久性的损害。 插拔接插件前请关闭电路板总开关,否则易损坏器件。 电路板应在绝缘平台上使用,否则可能引起电路板损坏。 不同编码机制不要混接。 安装设备需防止静电。 液晶显示器件或模块结雾时,不要通电工作,防止电极化学反应,产生断线。 遇到正负极连接时需谨慎,避免接反引起开发板的损坏。 保持电路板的表面清洁。 小心轻放,避免不必要的硬件损伤。
2
东南大学 电子科学与工程学院
assign c2=a|b; assign c3=~a; assign c4=~(a&b); assign c5=~(a|b); assign c6=a^b; endmodule 寄存器传输描述方式源程序: module gate(a,b,c1,c2,c3,c4,c5,c6); input a,b; output c1,c2,c3,c4,c5,c6; reg c1,c2,c3,c4,c5,c6; always@(a or b) begin case({a,b}) 2'b00: begin c1<=0;c2<=0;c3<=1;c4<=1;c5<=1;c6<=0; end 2'b01: begin c1<=0;c2<=1;c3<=1;c4<=1;c5<=0;c6<=1; end 2'b10: begin c1<=0;c2<=1;c3<=0;c4<=1;c5<=0;c6<=1; end 2'b11: begin c1<=1;c2<=1;c3<=0;c4<=0;c5<=0;c6<=0; end default: begin c1<=0;c2<=0;c3<=0;c4<=0;c5<=0; c6<=0; end endcase end endmodule (1) 进行语法检查和综合编译。 (2) 编写 testbench,进行时序仿真。
vivado 设计流程逻辑门实验报告

vivado 设计流程逻辑门实验报告下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。
文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by theeditor.I hope that after you download them,they can help yousolve practical problems. The document can be customized andmodified after downloading,please adjust and use it according toactual needs, thank you!In addition, our shop provides you with various types ofpractical materials,such as educational essays, diaryappreciation,sentence excerpts,ancient poems,classic articles,topic composition,work summary,word parsing,copy excerpts,other materials and so on,want to know different data formats andwriting methods,please pay attention!Vivado设计流程——逻辑门实验报告一、实验目的:本次实验的主要目的是通过Vivado软件,理解和掌握数字电路设计的基本流程,包括原理图输入、逻辑综合、仿真验证以及硬件实现等步骤。
Vivado 设计流程指导手册 (含安装流程与仿真)

Vivado设计流程指导手册——2013.4Vivado设计分为Project Mode和Non-project Mode两种模式,一般简单设计中,我们常用的是Project Mode。
在本手册中,我们将以一个简单的实验案例,一步一步的完成Vivado 的整个设计流程。
一、新建工程1、打开Vivado 2013.4开发工具,可通过桌面快捷方式或开始菜单中Xilinx Design Tools->Vivado 2013.4下的Vivado 2013.4打开软件,开启后,软件如下所示:2、单击上述界面中Create New Project图标,弹出新建工程向导,点击Next。
3、输入工程名称、选择工程存储路径,并勾选Create project subdirectory选项,为工程在指定存储路径下建立独立的文件夹。
设置完成后,点击Next。
注意:工程名称和存储路径中不能出现中文和空格,建议工程名称以字母、数字、下划线来组成。
4、选择RTL Project一项,并勾选Do not specify sources at this time,勾选该选项是为了跳过在新建工程的过程中添加设计源文件。
点击Next。
5、根据使用的FPGA开发平台,选择对应的FPGA目标器件。
(在本手册中,以Xilinx官方开发板KC705为例,Nexys4开发板请选择Artix-7 XC7A100TCSG324-2的器件,即Family和Subfamily均为Artix-7,封装形式(Package)为CSG324,速度等级(Speed grade)为-1,温度等级(Temp Grade)为C)。
点击Next。
6、确认相关信息与设计所用的的FPGA器件信息是否一致,一致请点击Finish,不一致,请返回上一步修改。
7、得到如下的空白Vivado工程界面,完成空白工程新建。
二、设计文件输入1、如下图所示,点击Flow Navigator下的Project Manager->Add Sources或中间Sources中的对话框打开设计文件导入添加对话框。
vivado 使用手册

vivado 使用手册Vivado 是一款由 Xilinx 公司开发的集成电路设计工具,广泛应用于 FPGA(现场可编程门阵列)的开发和设计过程中。
该使用手册将帮助您了解 Vivado 工具的基本功能和使用方法,使您能够更加高效地进行电路设计和验证。
首先,了解 Vivado 的基本概念是非常重要的。
Vivado 工具主要由两个部分组成:Vivado 设计套件和 Vivado 高级综合(HLS)。
Vivado 设计套件是一个全面的集成电路设计解决方案,包括设计、调试和验证等多个环节。
而 Vivado HLS 则是一种高级综合工具,可将 C/C++ 代码转换为可在 FPGA 上实现的硬件描述语言。
在开始使用 Vivado 进行设计时,您需要创建一个项目。
项目由设计文件、约束文件和其他相关文件组成。
设计文件可以使用 Verilog、VHDL 或其他硬件描述语言编写,约束文件用于指定电路的时序约束和板级约束等信息。
通过 Vivado 的GUI(图形用户界面)或 TCL(工具命令语言)进行项目管理和配置。
Vivado 提供了丰富的功能和工具,可帮助您进行电路设计、仿真和验证。
您可以使用自动布局布线(Auto Place and Route)工具自动生成电路的物理布局和连线。
借助 Vivado 的时序分析工具,您可以分析电路的时序约束和时钟域,以确保电路的性能和稳定性。
此外,还可以使用仿真工具验证电路的功能和正确性,并进行系统级调试和验证。
Vivado 还支持 IP(知识产权)核的使用。
IP 核是预先设计好的可重用电路模块,可以直接用于您的设计中,加快设计时间和减少工作量。
Vivado 拥有丰富的IP 核库,包含各种不同的功能模块,如存储器、接口、调制解调器等。
您可以使用 Vivado 的 IP 目录来浏览和添加 IP 核,也可以自定义开发您自己的 IP 核。
最后,在完成设计后,您可以使用 Vivado 工具将设计文件进行编译,并将生成的 Bitstream 文件下载到 FPGA 板卡上进行硬件实现和验证。
vivado_实验指导书

FPGA Basys3开发实验指导书安全使用规范●使用扩展接口扩展电路应用前请关闭电路板总开关,避免损坏器件。
●电路板建议在绝缘平台上使用,否则可能引起电路板损坏。
●电路使用时应防止静电。
●液晶显示器件或模块结雾时,不要通电工作,防止电极化学反应,产生断线。
●电源正负极、输入/输出端口定义时需谨慎,避免应接反引起开发板的损坏。
●保持电路板的表面清洁。
●小心轻放,避免不必要的硬件损伤目录实验一:熟悉VIV ADO编译环境(一) (1)一、实验目的 (1)二、实验内容 (1)三、实验要求 (1)四、实验步骤 (1)实验二:组合逻辑电路设计 (15)一、实验目的 (15)二、实验内容 (15)三、实验要求 (15)四、实验步骤 (15)五、实验结果 (19)实验三:时序逻辑电路设计 (21)一、实验目的 (21)二、实验内容 (21)三、实验要求 (21)四、实验步骤 (21)五、实验结果 (30)实验四:状态机 (32)一、实验目的 (32)二、实验内容 (32)三、实验要求 (32)四、实验步骤 (32)五、实验结果 (37)实验五:模块化调用 (38)一、实验目的 (38)二、实验内容 (38)三、实验要求 (38)实验六:数码管显示 (41)一、实验目的 (41)二、实验内容 (41)三、实验要求 (41)四、实验背景知识 (41)五、实验方案及实现 (43)六、实验结果 (45)实验七:交通灯 (47)一、实验目的 (47)二、实验内容 (47)三、实验要求 (47)四、实验方案及实现 (47)五、实验结果 (52)实验八:秒表的设计 (54)一、实验目的 (54)二、实验内容 (54)三、实验要求 (54)四、实验方案及实现 (54)五、实验结果 (57)实验九: 蜂鸣器演奏实验 (59)一、实验目的 (59)二、实验内容 (59)三、实验要求 (59)四、实验背景知识 (59)五、实验结果 (64)实验十:字符型LCM 驱动 (65)一、实验目的 (65)二、实验内容 (65)三、实验要求 (65)五、实验程序实现 (69)六、实验结果 (74)实验十一:VGA (76)一、实验目的 (76)二、实验内容 (76)三、实验要求 (76)四、实验背景知识 (76)五、实验结果 (80)实验十二:PS/2接口控制 (81)一、实验目的 (81)二、实验内容 (81)三、实验要求 (81)四、实验背景知识 (81)五、实验方案及实现: (84)六、实验结果 (90)实验一:熟悉VIVADO编译环境(一)一、实验目的1.熟悉VIV ADO的编译环境;2.了解在VIV ADO环境下运用Verilog HDL 语言的编程开发流程,包括源程序的编写、编译、模拟仿真及程序下载。
Vivado实验01_流水灯仿真实验及下板步骤

一、新建工程1. 打开Vivado 2014.2,界面如下:2. 点击上述界面中的Create New Project ,弹出新建工程向导,依次点击Next:3.板卡选项分别为Family: Artix-7Sub-Family: Artix-7Package: csg324Speed grade: -1Temp grade: C于是,Part选择xc7a100tcsg324-1,然后下一步点击Next Finish;二、设计文件输入1.如下图,点击输入设计程序:2.如下图,选择新建文件,依次创建4个verilog文件,文件名依次为:clock_div; ctc; s_74ls138; led_light注意:最后一个为顶层文件,文件名与项目的文件名相同,且所有名称中不能出现中文、空格和符号3.双击打开,然后输入依次设计程序:注意:每次输入一个设计程序最好保存一次,保存操作如下图4.添加仿真文件:5.进入仿真,点击 Run Simulation Run Behavioral Simulation接着点击弹出的信息条的Background将其隐藏,即可看到完整的仿真循环结果7.仿真结果如下图:1.仿真完成后,先关闭仿真,操作如下图:2.接着进行下一步综合,如下图操作:3.综合处成功后,要进行实现操作,如下图:4.实现成功后进行下一步,管脚约束,操作如下图:注意:此处需用到板卡手册,请使用老师群共享的文件“Nexys4-DDR_rm”,此为配适的较新版本,否则可能出现错误5.约束文件生成后,更改为I/O操作界面:6.此处不能使用默认电压值,否则会报错,更改电压值为3.3V,然后将时钟引脚接至E3,复位引脚接至C12,y0至y7输出接至V16、T15、U14、T16、V15、V14、V15、V11,引脚的连接方式有三种,所有操作如下图:7.约束完成后,关闭保存:8.在源程序文档中的约束文件中可以看到刚才操作生成的约束文件,也可以直接在约束文件中直接输入代码来完成管教的约束和更改:9.约束完成后,生成编程文件:10.此时需要连接板卡到电脑,在此之前需要对板卡进行设置:11.连接电脑,打开电源开关,等待驱动安装完成后,打开Hardware Manager →Open a new hardware target →在跳出的提示框中一直点击Next,不需更改,直到Finish →Program device →选择板卡xc7a100t_0 →在跳出的选择框中点击ok,这时就可以观察到仿真结果中的流水灯效果,以上为识别板卡到把编程文件下载到板卡的无脑操作,具体步骤请看下图:12.观察到板卡上的实验结果正确后,实验到此结束,关闭板卡的电源开关,拔出板卡,以上。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
FPGA Basys3开发实验指导书安全使用规范●使用扩展接口扩展电路应用前请关闭电路板总开关,避免损坏器件。
●电路板建议在绝缘平台上使用,否则可能引起电路板损坏。
●电路使用时应防止静电。
●液晶显示器件或模块结雾时,不要通电工作,防止电极化学反应,产生断线。
●电源正负极、输入/输出端口定义时需谨慎,避免应接反引起开发板的损坏。
●保持电路板的表面清洁。
●小心轻放,避免不必要的硬件损伤目录实验一:熟悉VIV ADO编译环境(一) (1)一、实验目的 (1)二、实验内容 (1)三、实验要求 (1)四、实验步骤 (1)实验二:组合逻辑电路设计 (15)一、实验目的 (15)二、实验内容 (15)三、实验要求 (15)四、实验步骤 (15)五、实验结果 (19)实验三:时序逻辑电路设计 (21)一、实验目的 (21)二、实验内容 (21)三、实验要求 (21)四、实验步骤 (21)五、实验结果 (30)实验四:状态机 (32)一、实验目的 (32)二、实验内容 (32)三、实验要求 (32)四、实验步骤 (32)五、实验结果 (37)实验五:模块化调用 (38)一、实验目的 (38)二、实验内容 (38)三、实验要求 (38)实验六:数码管显示 (41)一、实验目的 (41)二、实验内容 (41)三、实验要求 (41)四、实验背景知识 (41)五、实验方案及实现 (43)六、实验结果 (45)实验七:交通灯 (47)一、实验目的 (47)二、实验内容 (47)三、实验要求 (47)四、实验方案及实现 (47)五、实验结果 (52)实验八:秒表的设计 (54)一、实验目的 (54)二、实验内容 (54)三、实验要求 (54)四、实验方案及实现 (54)五、实验结果 (57)实验九: 蜂鸣器演奏实验 (59)一、实验目的 (59)二、实验内容 (59)三、实验要求 (59)四、实验背景知识 (59)五、实验结果 (64)实验十:字符型LCM 驱动 (65)一、实验目的 (65)二、实验内容 (65)三、实验要求 (65)五、实验程序实现 (69)六、实验结果 (74)实验十一:VGA (76)一、实验目的 (76)二、实验内容 (76)三、实验要求 (76)四、实验背景知识 (76)五、实验结果 (80)实验十二:PS/2接口控制 (81)一、实验目的 (81)二、实验内容 (81)三、实验要求 (81)四、实验背景知识 (81)五、实验方案及实现: (84)六、实验结果 (90)实验一:熟悉VIVADO编译环境(一)一、实验目的1.熟悉VIV ADO的编译环境;2.了解在VIV ADO环境下运用Verilog HDL 语言的编程开发流程,包括源程序的编写、编译、模拟仿真及程序下载。
二、实验内容1.VIV ADO环境下源程序的编写、编译2.模拟仿真3.程序下载三、实验要求1.在VIV ADO环境下完成对简单电路工作情况的仿真模拟;2.完成配置程序的下载,并在Basys3开发板上对程序进行最终验证。
四、实验步骤1.介绍在VIV ADO 环境下的编程开发流程(1) 启动VIV ADO。
如图1.1所示:图 1.1、VIV ADO窗口界面(2) 利用向导,建立一个新项目。
●在File 菜单中选择New Project选项启动项目向导。
●填写所要新建的工程名。
如这里的工程名:led,工程所在位置:C:/Workspace/Vivado,然后点击Next。
如图1.2所示:图 1.2、VIV ADO项目名称、路径设定窗口●在File 选择项目类型,如图1.3所示:图 1.3、项目类型●由于我们是新建工程,所以此处默认没有可以添加的源文件,并且设置编程语言和仿真语言均设置为Verilog。
点击Next,如图1.4所示:图 1.4、语言选择●没有可以添加的IP,所以不添加IP,直接点击Next●也没有可以添加的约束文件,所以不添加,直接点击Next●器件的选择是和实验平台的硬件相关的,根据我们的Basys3实验开发板,它使用的是xc7a35tcpg236-1的器件,找到相应的器件,如图 1.5 所示:图 1.5、VIV ADO 中器件选择窗口VIV ADO 中包含完整的文本编辑程序(Text Editor),在此用Verilog HDL 来编写源程序。
新建一个Verilog HDL 文件,可以通过右击Designsourse选择Add Sourse,如图1.6所示:图 1.6、添加源文件●选择第二个选项,如图1.7所示:图 1.7、选择文件类型●选择Create File…在弹出下面窗口填写新建源文件名称为display_7seg图 1.8、创建文件 创建完成点击Finish图 1.9、创建完成填写模块名称和端口,如图1.10所示:图 1.10、Define Module窗口(3) Verilog HDL 程序输入。
在用户区Verilog HDL 文件窗口中输入源程序,保存时文件名与实体名保持一致。
如图1.11所示:图 1.11、Verilog代码编辑窗口编辑代码如下:module led(input CLK,output reg[1:0] led_out);reg [32:0]count=0;parameter T1MS=50000000;always@(posedge CLK)begincount<=count+1;if(count==T1MS)begincount<=0;endif(count<25000000)beginled_out<=2'b01;endelsebeginled_out<=2'b10;endendEndmodule(4 )VIV ADO 程序编译。
完成Synthesize的综合编译。
如图1.12所示:图 1.12、Verilog代码Synthesize综合编译●编译成功后双击Schematic可以查看RTL级电路图。
如图1.13所示:图 1.13、RTL级电路图(4 )分配引脚。
●右击约束子目录下文件夹,选择Add Sourse…,如图1.14所示:图 1.14、RTL级电路图●选择第一项Add or create constraints,点击Next选择Create File…弹出下面的窗口,填写约束文件的文件名led图 1.15、创建约束文件编写约束文件如下:set_property PACKAGE_PIN W5 [get_ports CLK]set_property IOSTANDARD LVCMOS33 [get_ports CLK]set_property PACKAGE_PIN U16 [get_ports {led_out[0]}]set_property PACKAGE_PIN L1 [get_ports {led_out[1]}]set_property IOSTANDARD LVCMOS33 [get_ports {led_out[0]}] set_property IOSTANDARD LVCMOS33 [get_ports {led_out[1]}]图 1.16、Impementation●在上图中单击Run implementation,运行完成后弹出下面窗口:图 1.17、生成二进制文件●运行完成,选择Open Hardware Manager图 1.18、Hardware Manager●将实验板通过USB连接至电脑,然后点击Auto Connect连接成功后,右击FPGA 芯片选择Program Device图 1.20、对开发板编程下载完成OK,开发板即可演示。
接下来介绍如何将程序烧录到 ROM 里,这样程序就能掉电不丢失。
右击 FPGA 芯片选择 Add Configuration Memory Device图 1.21、ROM烧写 选择flash 芯片型号,如图1.20所示:图 1.22、选择芯片型号在弹出的窗口选择配置文件为前面生成的.bit 文件图 1.23、选择二进制文件选定文件并完成编程后点击OK,完成Flash programming实验二:组合逻辑电路设计一、实验目的1.学习Verilog HDL 基本语法;2.巩固VIV ADO环境下的Verilog HDL 编程设计的基础。
二、实验内容1.实现以下组合逻辑功能:编码/译码器,比较器,全加器。
三、实验要求1.在PC 机上完成相应的时序仿真,对结果进行分析;2.完成下载,在实验板上对程序进行验证。
四、实验步骤1.编码器的实现编码器通常分为两大类:普通编码器和优先编码器。
其中普通编码器就是对某一个给定时刻只能对一个输入信号进行编码的编码器,它的输入端口不允许同一时刻出现两个以上的有效输入信号;优先编码器就是对某一个给定时刻只对优先级最高的输入信号进行编码的编码器,它的输入端口允许多个输入信号同时有效。
现以编码器为例,介绍普通编码器的Verilog HDL语言程序设计。
通常,四至二线编码器的逻辑电路符号如图 2.1所示,真值表如表 2.1 所示。
不难看出该编码器的工作原理为:编码器将对四个输入信号进行编码操作,然后以两位二进制码的形式输出,这里输入信号为低电平有效。
图 2.1、四至二线编码器的电路符号具体操作过程如下:(1)利用项目向导,建立一个新项目,建议工程名为expe2。
(2)新建一个Verilog HDL 文件,并输入源程序:module encoder4_2(q,d);input[3:0] d;output[1:0] q;reg[1:0] q;always@(d) begincase(d)4'b0111: q<=2'b11;4'b1011: q<=2'b10;4'b1101: q<=2'b01;4'b1110: q<=2'b00;default: q<=2'bzz;endcaseendendmodulea.对源程序进行语法检查并编译。
b.对项目进行时序逻辑功能仿真。
c.分配管脚。
(管脚分配可参照实验结果部分)d.下载。
2.比较器的实现数字比较器的设计,通常依据两组二进制数码的数值大小来进行比较,即a>b、a=b 或a<b,这三种情况有一种值为真。
比较器的电路符号如图2.2。
图 2.2、比较器电路符号各引脚说明:A、B:皆为二位信号;CLK:时钟脉冲输入;RST:清除控制。
AGTB :当A>B 时,其值为1,否则为0;AEQB :当A=B 时,其值为1,否则为0;ALTB :当A<B 时,其值为1,否则为0。