Ⅰ 利用vivado配置zynq时如何添加管脚约束
约束文件里面可以设,另外双击PS里面的IO也可以设置
Ⅱ 如何使用vivado isim仿真
使用vivado isim仿真的方法和过程如下:
1) 测试平台建立;
a) 在工程管理区点击鼠标右键,弹出菜单选择New Source,弹出界面; b) 输入文件名,选择Verilog Test Fixture,打钩add to project,单击NEXT;
c) 选择要仿真的文件,点击NEXT;
d) 点击“FINISH”,就生成一个Verilog测试模块。
ISE能自动生成测试平台的完整构架,包括所需信号、端口声明以及模块调用的实现。所需要完成的工作就是initial….end模块中的“//Add stimulus here”后面添加测试向量生成代码。
这里给出示例测试代码,将其添加于//Add stimulus here处
#100;
SW = 7;
#100;
SW = 11;
#100;
SW = 13;
#100;
SW = 14;
2) 测试平台建立后,在工程管理区将状态设置为“Simulation”;选择要仿真的文件名,
过程管理区就会显示“Isim simlator”;
3) 下拉“Isim simlator”,选择“Simulate Behavioral Model”,单击鼠标右键,现在“Process Properties”可修改仿真远行时间等。
4) 修改后,直接双击“Isim simlator”中的“Simulate Behavioral Model”进行仿真。
检查仿真结果是否达到预期设计目标。
Vivado设计套件,是FPGA厂商赛灵思公司2012年发布的集成设计环境。包括高度集成的设计环境和新一代从系统到IC级的工具,这些均建立在共享的可扩展数据模型和通用调试环境基础上。集成的设计环境——Vivado设计套件包括高度集成的设计环境和新一代从系统到IC级的工具,这些均建立在共享的可扩展数据模型和通用调试环境基础上。
Ⅲ FPGA JTAG检测不到器件有什么原因
1:JTAG是IEEE 1149.1边界扫描协议的代称,一般为4线接口,如图中的10P接口,TCK.TMS.TDI,TDO是协议规定的必备引脚,还有一个可选引脚TRST。具体的标准请参考IEEEE 1149.1技术说明。
2:对于JTAG上拉电阻和下拉电阻,TCK之所以下拉,是为了时钟第一个边缘为posedge,同时TMS,TDI按照IEEE 1149.1标准接上拉,为了保证驱动能力还较好的数据沿,一般电阻选10K或者4.7K的较多。
3:电路原理图上面为复位电路,对FPGA复位后,配置芯片的Bits流会通过JATG引脚被重新加载到片内的RAM中,对于Altera配置芯片一般是EPCS器件,对于Xilinx则是EPRAM器件(电路未给出)。至于怎么连接的请看器件手册。在此不作赘述。
4:类似于nSTATUS等引脚为Altera专用电气引脚,非普通IO引脚。不必要理解他们的意思,只需要记住如果保证器件能正常运行,某些特殊引脚的接法就行了(接地,上拉,下拉,VCC,悬空),这些定义在器件手册和技术文档中你都能找得到。
综上所述:你的电路包括了FPGA复位逻辑和JTAG配置电路。某些接法没必要去深究,记住就OK!
Ⅳ vivado14.4 edk如何加入i2c的ip
SOPC Builder、Quartus II 8.0、Nios II
8.0
IDE。开发工具安装目录:D:\。
第一步,下载i2c外设软件包:oc_i2c_master.rar。本软件包包含i2c外设的HDL实现,及驱动代码。网络上很容易找到。
第二步,解压,并把整个文件夹复制到D:\altera\80\ip\sopc_builder_ip\。
第三步,在Altera SOPC Builder中create new
componet-file-open
打开D:\altera\80\ip\sopc_builder_ip\ oc_i2c_master\中的class.ptf文件。
第四步,在Altera SOPC
Builder中Tools-options-IP Search
Path 如下设置:D:\altera\80\ip\sopc_builder_ip。
第五步,此时Altera SOPC Builder左侧Systerm
Contents中出现DeviceSOPC-〉oc_i2c_master外设。双击此条目,i2c外设及可被添加到niosII上。
第六步,Altera SOPC Builder中sopc buildergenerate。
第七步,若没有错误,在Quartus
II中顶层文件中(bdf文件)加入上步生成的nios_cpu模块。
第八步,添加IO
PIN,并把i2c相关的两个脚设置成双向IO,并设置成开漏输出。注意硬件上,i2c两个IO要加上拉电阻,2K欧姆较为合适。
第九步,Quartus II编译整个工程。
第十步,基于这个nios cpu在Nios II
IDE中建立工程。通过包含头文件“oc_i2c.h”即可调用i2c外设的相关驱动函数。注意在读写i2c外设之前请先调用i2c初始化函数。
在Quartus II中编译整个工程时,若出现以下错误:Error:Node
Ⅳ vivado 怎么把i o t 封装到一起
Vivado Logic Analyzer的使用
chipscope中,通常有两种方法设置需要捕获的信号。
1.添加cdc文件,然后在网表中寻找并添加信号
2.添加ICON、ILA和VIO的IP Core
第一种方法,代码的修改量小,适当的保留设计的层级和网线名,图形化界面便于找到
需要捕获的信号。
第二种方法,对代码的改动量大一些,同时需要熟悉相关IP的设置,优点是,可以控制
ICON,并调用VIO。
与之类似,Vivado也有着两种方法进行设置。
1.在综合后的网表中寻找相关信号,右键点开菜单,然后设置mark debug
2.添加ILA,VIO的IP Core
第一种方法与chipscope的第一种方法极为类似:
1.都需要综合后才能设置;
2.都需要保留一定的设计层级或者网线名来便于寻找信号;
3.并非所有信号都可以被捕获,不能捕获的信号,chipscope中是显示为灰色,vivado
中是没有mark debug的选项在右键菜单中;
第二种方法就更为类似了,vivado可以兼容ISE的IP,所以可以直接调用chipscope的相
关IP,调试时也只是用Chipscope,另外可以使用Vivado自己的ILA IP,来进行设计,
但最大的问题是Vivado不提供ICON的IP以供选择,进一步埋没了ICON的地位。
另外,早起的Vivado IP Catalog提供Chipscope的ICON、ILA和VIO IP Core可以选择,目前已经取消了这些IP,只支持Vivado自己的ILA/VIO IP Core。
这里提供一个非常简单的设计代码,用于Vivado Logic Analyzer的研究。
`timescale 1ns / 1ps
mole Nexy_4 (
input I_CLK,
output [3:0] O_ST_COUNTER,
output O_TIMECOUNTER_OUTPUT
);
wire CLK_100;
clk_wiz_0 CLK_UNIT
(
.clk_in1 (I_CLK),
.clk_out1 (CLK_100),
.locked ()
);
reg [7:0] startup_counter = 'b0;
always @ (posedge CLK_100)begin
if(startup_counter == 8'b11111111)begin
startup_counter <= 8'b00000011;
end else begin
startup_counter <= startup_counter + 8'b1;
end
end
assign O_ST_COUNTER = startup_counter[7:4];
wire [47:0] TimeCounter_Result_wire ;
reg [47:0] TimeCounter_Result_reg = 'b0 ;
reg TimeCounter_Output ;
always @ (posedge CLK_100)begin
TimeCounter_Result_reg <= TimeCounter_Result_wire;
end
TimeCounter TimeCounter_Unit (
.CLK ( CLK_100 ), // input wire CLK
.A ( 2'b01 ), // input wire [1 : 0] A
.C ( TimeCounter_Result_reg ), // input wire [47 : 0] C
.P ( TimeCounter_Result_wire ) // output wire [47 : 0] P
);
always @ ( posedge CLK_100 )begin
TimeCounter_Output <= TimeCounter_Result_reg[47];
end
assign O_TIMECOUNTER_OUTPUT = TimeCounter_Output ;
endmole
综合后的Netlist中选择信号进行捕获的方法。
只有Nets下的信号可以设置mark debug。
从原理上来说是很不合理的。Chipscope的捕获界面中,只有Reg信号可以被抓取,而Vivado是Net,从实际的角度说也是很不合理的,LUT可以直接被抓去,从原理上和时序上,对设计都是不合适的。
在Set Up Debug中,工具会自动分析信号的所在时钟域,并添加时钟。少数情况,可以通过右键点击Select Clock Domain来修改时钟域。
下一页设置存储深度,相比较ChipScope,信号的宽度不需要事先设定好,而是根据捕获信号来自动设定,Vivado确实方便了很多。
设置好之后,可以在属性中修改ILA Core的属性。确认无误后进行Implementation。
不过,从Implementation的结果可以看到,虽然抓取的是LUT的信号,但是ILA的IP已经添加了寄存器进行隔离。从这一结果考虑,Vivado的ILA设计还是很优秀的。
但即使是这样,为了netlist中的Reg型信号无法设置mark debug,确实是一个不好理解的解释。
最终,Vivado Logic Analyzer的设置会以Tcl脚本的形式反应到XDC文件中。
完成Implementation后,生成bit文件,打开Hardware Manager,下载并配置好FPGA,开始Vivado Logic Analyzer的使用。
1. 下载好bit文件后的界面如下图所示。
2. 这里有个问题,Vivado 2014.2中,Debug Probes窗口不会自动打开,可以再Windows选项单中找到该窗口。
3. 打开Debug Probes窗口后的界面如下图所示。
4. 在Debug Probes中,把需要观察的信号拖到Basic Trigger Setup中,可以设置触发信号。
5. 设置好触发信号之后,就可以开始捕获信号。
6. 每一组触发条件可以设置Operator、Radix和Value来设置具体的触发条件,多个触发条件还可以进行组合。
7. 为了便于观察,在Window data depth将数据设为16个数据。
8. 设置好之后重新捕获数据,可以看到一次只捕获16个数据。
9. 可以设置窗口的数目,这里将Number of Windows设为2,代表两个窗口,每次捕获的数据为4个。
10. 重新触发后,可以看到,触发了两次,每次的触发条件都是一致的,即startup_counter = 8’h03。从下方的两个计数器可以看到,是先后的两次捕获。
其实,与chipscope类似,可以设置捕获数据的条件。
1. 将Capture mode设置为BASIC。
2. 在Basic Trigger Setup下面可以看到Basic Capture Setup的界面。
3. 从上两张图可以看到,触发信号为starup_counter,触发条件为03,捕获条件为88,触发位置为7。
4. 从捕获结果图来看,一共捕获了16个数据,触发条件处在第7个数据的位置上,该触发条件会被捕获。另外,在触发条件前后的数据,只有数据位88时才会被捕获。
5. 将触发位置设为0后重新捕获,可以看到第一个数据是触发条件,随后的数据只有为88才会被捕获。
6. 这里,对ChipScope和Vivado Logic Analyzer的功能进行一个初步的比较。
ChipScope Vivado Logic Analyzer Basic
多种触发值 支持 支持
触发条件组合 支持 支持
触发位置选择 支持 支持
多窗口触发 支持 支持
重复触发 支持 支持
条件捕获 支持 支持
状态机触发 16状态 不支持
计数器辅助 支持 不支持
标志位显示 不支持 不支持
重复触发功能在文章中没有涉及。
从该表可以看到,ChipScope的功能似乎较为强大。虽然在设置捕获信号时Vivado较为便捷,但是在调试时似乎不如ChipScope的方便。
需要注意的是,Vivado并没有确实这些功能,而是没有提供在Basic功能中,关于Advancedd用法,会在后续博文中描述。
Ⅵ 如何在Vivado中配置和管理可重用IP
在Design窗口右键选New Source 选中左边列表里的IP(Core Generator ...) 随便写个名字 点next就可以看到IP库的索引 FFT IP CORE
在Digital Signal Processing - Transforms - FFTs下14.x的名字应该是Fast Fourier Transform 7.1在配置界面点help可以打开pdf格式的详细说明!
Ⅶ vivado 四位二进制加法计数器 在数码管上显示的代码,和引脚分配
只能告诉你原理,先用一做计数器用你学号作为默认值,开关控制计数器增加;这个很简单,主要是显示,显示要用动态显示,数码管的位选要在四个数码管上快速的循环转移,这样能看出来四个数码管是都亮的效果,段选就比较简单了,通过一个译码动作...
Ⅷ fpga未使用的管脚放在总线上如何设置管脚类型,不影响总线
如果是 Xilinx ISE 的话,在左侧Design窗口中的generate programming file按钮那里,右键点击,弹出菜单中的process properties选项卡里,有unused IOB的属性配置,即未用管脚熟悉配置,可选择为上拉,下拉或者悬空,你可以根据需要配置这个熟悉。
如果总线上的使能信号是低电平有效的,建议将默认unused IOB属性配置为 Pull Up即上拉,当然,具体配置啥还是要看你的系统中怎么要求的
Ⅸ vivado 错误怎么改
Vivado Logic Analyzer的使用
chipscope中,通常有两种方法设置需要捕获的信号。
1.添加cdc文件,然后在网表中寻找并添加信号
2.添加ICON、ILA和VIO的IP Core
第一种方法,代码的修改量小,适当的保留设计的层级和网线名,图形化界面便于找到
需要捕获的信号。
第二种方法,对代码的改动量大一些,同时需要熟悉相关IP的设置,优点是,可以控制
ICON,并调用VIO。
与之类似,Vivado也有着两种方法进行设置。
1.在综合后的网表中寻找相关信号,右键点开菜单,然后设置mark debug
2.添加ILA,VIO的IP Core
第一种方法与chipscope的第一种方法极为类似:
1.都需要综合后才能设置;
2.都需要保留一定的设计层级或者网线名来便于寻找信号;
3.并非所有信号都可以被捕获,不能捕获的信号,chipscope中是显示为灰色,vivado
中是没有mark debug的选项在右键菜单中;
第二种方法就更为类似了,vivado可以兼容ISE的IP,所以可以直接调用chipscope的相
关IP,调试时也只是用Chipscope,另外可以使用Vivado自己的ILA IP,来进行设计,
但最大的问题是Vivado不提供ICON的IP以供选择,进一步埋没了ICON的地位。
另外,早起的Vivado IP Catalog提供Chipscope的ICON、ILA和VIO IP Core可以选择,目前已经取消了这些IP,只支持Vivado自己的ILA/VIO IP Core。
这里提供一个非常简单的设计代码,用于Vivado Logic Analyzer的研究。
`timescale 1ns / 1ps
mole Nexy_4 (
input I_CLK,
output [3:0] O_ST_COUNTER,
output O_TIMECOUNTER_OUTPUT
);
wire CLK_100;
clk_wiz_0 CLK_UNIT
(
.clk_in1 (I_CLK),
.clk_out1 (CLK_100),
.locked ()
);
reg [7:0] startup_counter = 'b0;
always @ (posedge CLK_100)begin
if(startup_counter == 8'b11111111)begin
startup_counter <= 8'b00000011;
end else begin
startup_counter <= startup_counter + 8'b1;
end
end
assign O_ST_COUNTER = startup_counter[7:4];
wire [47:0] TimeCounter_Result_wire ;
reg [47:0] TimeCounter_Result_reg = 'b0 ;
reg TimeCounter_Output ;
always @ (posedge CLK_100)begin
TimeCounter_Result_reg <= TimeCounter_Result_wire;
end
TimeCounter TimeCounter_Unit (
.CLK ( CLK_100 ), // input wire CLK
.A ( 2'b01 ), // input wire [1 : 0] A
.C ( TimeCounter_Result_reg ), // input wire [47 : 0] C
.P ( TimeCounter_Result_wire ) // output wire [47 : 0] P
);
always @ ( posedge CLK_100 )begin
TimeCounter_Output <= TimeCounter_Result_reg[47];
end
assign O_TIMECOUNTER_OUTPUT = TimeCounter_Output ;
endmole
综合后的Netlist中选择信号进行捕获的方法。
只有Nets下的信号可以设置mark debug。
从原理上来说是很不合理的。Chipscope的捕获界面中,只有Reg信号可以被抓取,而Vivado是Net,从实际的角度说也是很不合理的,LUT可以直接被抓去,从原理上和时序上,对设计都是不合适的。
在Set Up Debug中,工具会自动分析信号的所在时钟域,并添加时钟。少数情况,可以通过右键点击Select Clock Domain来修改时钟域。
下一页设置存储深度,相比较ChipScope,信号的宽度不需要事先设定好,而是根据捕获信号来自动设定,Vivado确实方便了很多。
设置好之后,可以在属性中修改ILA Core的属性。确认无误后进行Implementation。
不过,从Implementation的结果可以看到,虽然抓取的是LUT的信号,但是ILA的IP已经添加了寄存器进行隔离。从这一结果考虑,Vivado的ILA设计还是很优秀的。
但即使是这样,为了netlist中的Reg型信号无法设置mark debug,确实是一个不好理解的解释。
最终,Vivado Logic Analyzer的设置会以Tcl脚本的形式反应到XDC文件中。
完成Implementation后,生成bit文件,打开Hardware Manager,下载并配置好FPGA,开始Vivado Logic Analyzer的使用。
1. 下载好bit文件后的界面如下图所示。
2. 这里有个问题,Vivado 2014.2中,Debug Probes窗口不会自动打开,可以再Windows选项单中找到该窗口。
3. 打开Debug Probes窗口后的界面如下图所示。
4. 在Debug Probes中,把需要观察的信号拖到Basic Trigger Setup中,可以设置触发信号。
5. 设置好触发信号之后,就可以开始捕获信号。
6. 每一组触发条件可以设置Operator、Radix和Value来设置具体的触发条件,多个触发条件还可以进行组合。
7. 为了便于观察,在Window data depth将数据设为16个数据。
8. 设置好之后重新捕获数据,可以看到一次只捕获16个数据。
9. 可以设置窗口的数目,这里将Number of Windows设为2,代表两个窗口,每次捕获的数据为4个。
10. 重新触发后,可以看到,触发了两次,每次的触发条件都是一致的,即startup_counter = 8’h03。从下方的两个计数器可以看到,是先后的两次捕获。
其实,与chipscope类似,可以设置捕获数据的条件。
1. 将Capture mode设置为BASIC。
2. 在Basic Trigger Setup下面可以看到Basic Capture Setup的界面。
3. 从上两张图可以看到,触发信号为starup_counter,触发条件为03,捕获条件为88,触发位置为7。
4. 从捕获结果图来看,一共捕获了16个数据,触发条件处在第7个数据的位置上,该触发条件会被捕获。另外,在触发条件前后的数据,只有数据位88时才会被捕获。
5. 将触发位置设为0后重新捕获,可以看到第一个数据是触发条件,随后的数据只有为88才会被捕获。
6. 这里,对ChipScope和Vivado Logic Analyzer的功能进行一个初步的比较。
ChipScope Vivado Logic Analyzer Basic
多种触发值 支持 支持
触发条件组合 支持 支持
触发位置选择 支持 支持
多窗口触发 支持 支持
重复触发 支持 支持
条件捕获 支持 支持
状态机触发 16状态 不支持
计数器辅助 支持 不支持
标志位显示 不支持 不支持
重复触发功能在文章中没有涉及。
从该表可以看到,ChipScope的功能似乎较为强大。虽然在设置捕获信号时Vivado较为便捷,但是在调试时似乎不如ChipScope的方便。
需要注意的是,Vivado并没有确实这些功能,而是没有提供在Basic功能中,关于Advancedd用法,会在后续博文中描述。
Ⅹ vivado分配引脚必须写约束文件吗
FPGA分配引脚有几种方法: 1,在你的VHDL里面用约束把管脚直接绑定到某个管脚 2,开发系统里可以编辑一个约束文件,把所有的管脚约束都房子这个文件里面; 3,开发系统里还提供一个图形化的工具,你可以拉动你的IO脚到某个PAD。