请问 我的ISEvs工程生成cmake文件 生成了TESTBENCH文件 用modelsim仿真的时候 只能出来一个周期

21ic官方微信-->
后使用快捷导航没有帐号?
请完成以下验证码
查看: 1537|回复: 5
ISE13.1调用Modelsim10.0出现的一点小问题及解决过程
&&已结帖(0)
主题帖子积分
主题帖子积分
专家等级:结帖率:12%打赏:12.00受赏:50.00
主题帖子积分
软件环境:
ISE13.1+System
Matlab2010b
Modelsim SE 10.0
已编译Xilinx器件的Modlsim仿真库
现象:在System
Generator做了点仿真,验证成功之后,自动生成了testbench文件,然后在ISE中打开生成的工程,调用Modelsim选择behavior仿真,在Modelsim打开之后总是没完没了的提示
Error: (vsim-19) Failed to access library 'work' at
&work&.,把我折腾了两个小时啊;用ISIM仿真没有问题,但是ISIM没有analog模拟显示波形的功能,还是得用Modelsim。
没办法,在ISE中观测工程的仿真属性,发现ISE在调用仿真软件时用到了System
Generator生成的pn_behavioral.do仿真脚本。用记事本打开pn_behavioral.do,看到如下内容:
-- If you see error messages concerning missing libraries for
XilinxCoreLib, unisims, or simprims, you may not have set
-- up your ModelSim
environment correctly. See the Xilinx
-- Support Website for instructions
telling how to compile
-- these libraries.
vlog D:/Xilinx/13.1/ISE_DS/ISE/verilog/src/glbl.v
sdft_paper_sg2.v
vlog sdft_paper_sg2_cw.v
vlog sdft_paper_sg2_tb.v
+nowarnTFMPC -L work -L UNISIMS_VER -L SIMPRIMS_VER -L XILINXCORELIB_VER
work.glbl -t ps sdft_paper_sg2_tb
add wave *
view signals
run 000 ns
, , , , , , , , ,
主题帖子积分
主题帖子积分
专家等级:结帖率:12%打赏:12.00受赏:50.00
主题帖子积分
不用客气的!
主题帖子积分
主题帖子积分
专家等级:结帖率:12%打赏:12.00受赏:50.00
主题帖子积分
感谢猴哥!
GoldSunMonkey
主题帖子积分
高级技术员, 积分 925, 距离下一级还需 75 积分
高级技术员, 积分 925, 距离下一级还需 75 积分
主题帖子积分
专家等级:结帖率:6%
主题帖子积分
高级技术员, 积分 925, 距离下一级还需 75 积分
高级技术员, 积分 925, 距离下一级还需 75 积分
谢谢你的分享
主题帖子积分
主题帖子积分
专家等级:结帖率:100%打赏:0.00受赏:20.00
主题帖子积分
喜欢你的分享~
& && && && && && && &2014, 追逐梦想
主题帖子积分
主题帖子积分
专家等级:结帖率:12%打赏:12.00受赏:50.00
主题帖子积分
第一步执行vlib work的时候就报错了。于是打开Modelsim,在命令窗口输入cd命令切换到工程文件夹,然后输入vlib
work,则work建好了;退出Modelsim,在ISE中重新调用Modelsim仿真,又出现了Error: (vsim-19) Failed to
access library 'pn_behavioral' at &pn_behavioral&.这样的错误。如法炮制,输入vlib
pn_behavioral,退出Modelsim,在ISE中重新调用Modelsim仿真,这回不抱错了,可是波形窗口什么都没有。
狠狠心把pn_behavioral.do文件里面剩下的内容全复制到Modelsim命令窗口里面然后回车,总算成功了。也不知道是哪个软件的bug,看来最近System
Generator自动生产工程之后做仿真都得这么搞了。
*滑动验证:
您需要登录后才可以回帖
核心会员奖章
等级类勋章
坚毅之洋流
发帖类勋章
技术领袖奖章
人才类勋章
时间类勋章
希望之星奖章
等级类勋章
甘甜之泉水
发帖类勋章
终身成就奖章
等级类勋章
热门推荐 /2博客访问: 498303
博文数量: 112
博客积分: 3532
博客等级: 中校
技术积分: 1313
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: 嵌入式
1. 激励的产生
对于testbench而言,端口应当和被测试的module一一对应。端口分为input,output和inout类型产生激励信号的时候,input对应的端口应当申明为reg, output对应的端口申明为wire,inout端口比较特殊,下面专门讲解。
1)直接赋值。
一般用initial块给信号赋初值,initial块执行一次,always或者forever表示由事件激发反复执行。
举例,一个module
module exam();
reg rst_n;
大家应该注意到有个#符号,该符号的意思是指延迟相应的时间单位。该时间单位由timscale决定.一般在testbench的开头定义时间单位和仿真
精度,比如`timescale
1ns/1ps,前面一个是代表时间单位,后面一个代表仿真时间精度。以上面的例子而言,一个时钟周期是20个单位,也就是20ns。而仿真时间精度的概
念就是,你能看到1.001ns时对应的信号值,而假如timescale
1ns/1ns,1.001ns时候的值就无法看到。对于一个设计而言,时间刻度应该统一,如果设计文件和testbench里面的时间刻度不一致,仿真
器默认以testbench为准。一个较好的办法是写一个global.v文件,然后用include的办法,可以防止这个问题。
对于反复执行的操作,可写成task,然后调用,比如
task load_
input [3:0] load_
@(negedge clk_50);
$display($time, " <>", load_value);
load_l = 1’b0;
count_in = load_
@(negedge clk_50);
load_l = 1’b1;
endtask //of load_count
load_count(4’hA);&&
// 调用task
其他像forever,for,function等等语句用法类似,虽然不一定都能综合,但是用在testbench里面很方便,大家可以自行查阅参考文档
2) 文件输入
有时候,需要大量的数据输入,直接赋值的话比较繁琐,可以先生成数据,再将数据读入到寄存器中,需要时取出即可。用 $readmemb系统任务从文本文件中读取二进制向量(可以包含输入激励和输出期望值)。$readmemh 用于读取十六进制文件。例如:
reg [7:0]&&
mem[1:256]&&
a 8-bit, 256-word 定义存储器mem
$readmemh ( "E:/readhex/mem.dat", mem ) // 将.dat文件读入寄存器mem中
$readmemh ( "E:/readhex/mem.dat", mem, 128, 1 ) // 参数为寄存器加载数据的地址始终
2.&& 查看仿真结果
对于简单的module来说,要在modelsim的仿真窗口里面看波形,就用add wave ..命令
比如,testbench的顶层module名叫tb,要看时钟信号,就用add wave tb.clk
要查看所有信号的时候,就用 add wave /*
当然,也可以在workspace下的sim窗口里面右键单击instance来添加波形
对于复杂的仿真,免不了要记录波形和数据到文件里面去。
1)波形文件记录
常见的波形文件一般有两种,vcd和fsdb,debussy是个很好的工具,支持fsdb,所以最好是modelsim+debussy的组合
默认情况下,modelsim不认识fsdb,所以需要先装debussy,再生成fsdb文件。
$dumpfile和$dumpvar是verilog语言中的两个系统任务,可以调用这两个系统任务来创建和将指定信息导入VCD文件.
对于fsdb文件来说,对应的命令是fsdbDumpfile,dumpfsdbvars
(什么是VCD文件? 答:VCD文件是在对设计进行的仿真过程中,记录各种信号取值变化情况的信息记录文件。EDA工具通过读取VCD格式的文件,显示图形化的仿真波形,所以,可以把VCD文件简单地视为波形记录文件.)下面分别描述它们的用法并举例说明之。
$dumpfile系统任务:为所要创建的VCD文件指定文件名。
举例("//"符号后的内容为注释文字):
$dumpfile ("myfile.dump"); //指定VCD文件的名字为myfile.dump,仿真信息将记录到此文件
$dumpvar系统任务:指定需要记录到VCD文件中的信号,可以指定某一模块层次上的所有信号,也可以单独指定某一个信号。
典型语法为$dumpvar(level, module_name);
参数level为一个整数,用于指定层次数,参数module则指定要记录的模块。整句的意思就是,对于指定的模块,包括其下各个层次(层次数由
level指定)的信号,都需要记录到VCD文件中去。
$dumpvar (0, top); //指定层次数为0,则top模块及其下面各层次的所有信号将被记录
$dumpvar (1, top); //记录模块实例top以下一层的信号
//层次数为1,即记录top模块这一层次的信号
//对于top模块中调用的更深层次的模块实例,则不记录其信号变化
$dumpvar (2, top); //记录模块实例top以下两层的信号
//即top模块及其下一层的信号将被记录
假设模块top中包含有子模块module1,而我们希望记录top.module1模块以下两层的信号,则语法举例如下:
$dumpvar (2, top.module1); //模块实例top.module1及其下一层的信号将被记录
假设模块top包含信号signal1和signal2(注意是变量而不是子模块), 如我们希望只记录这两个信号,则语法举例如下:
$dumpvar (0, top.signal1, top.signal2); //虽然指定了层次数,但层次数是不影响单独指定的信号的
//即指定层次数和单独指定的信号无关
我们甚至可以在同一个$dumpvar的调用中,同时指定某些层次上的所有信号和某个单独的信号,假设模块top包含信号signal1,同时包含有子模
块module1,如果我们不但希望记录signal1这个独立的信号,而且还希望记录子模块module1以下三层的所有信号,则语法举例如下:
$dumpvar (3, top.signal1, top.module1); //指定层次数和单独指定的信号无关
//所以层次数3只作用于模块top.module1, 而与信号
top.signal1无关
上面这个例子和下面的语句是等效的:
$dumpvar (0, top.signal1);
$dumpvar (3, top.module1);
$dumpvar的特别用法(不带任何参数):
$ //无参数,表示设计中的所有信号都将被记录
最后,我们将$dumpfile和$dumpvar这两个系统任务的使用方法在下面的例子中综合说明,假设我们有一个设计实例,名为
i_design,此设计中包含模块module1,模块module1下面还有很多层次,我们希望对这个设计进行仿真,并将仿真过程中模块
module1及其以下所有层次中所有信号的变化情况,记录存储到名为mydesign.dump的VCD文件中去,则例示如下:
$dumpfile ("mydesign.dump"); //指定VCD文件名为mydesign.dump
$dumpvar (0, i_design.module1); //记录i_design.module1模块及其下面层次中所有模块的所有信号
对于生成fsdb文件而言,也是类似的
$fsdbDumpfile("tb_xxx.fsdb");
$fsdbDumpvars(0,tb_xxx);
2)文件输出结果
integer out_&& // out_file 是一个文件描述,需要定义为 integer类型
out_file = $fopen ( " cpu.data " ); // cpu.data 是需要打开的文件,也就是最终的输出文本
设计中的信号值可以通过$fmonitor, $fdisplay,$fwrite
其中$fmonitor只要有变化就一直记录,$fdisplay和$fwrite需要触发条件才记录
initial begin
&&& $fmonitor(file_id, "%m: %t in1=%d o1=%h", $time, in1, o1);
always@(a or b)
&&& $fwrite(file_id,"At time%t a=%b b=%b",$realtime,a,b);
3 testbench的技巧
1).如果激励中有一些重复的项目,可以考虑将这些语句编写成一个task,这样会给书写和仿真带来很大方便。例如,一个存储器的testbench的激励可以包含write,read等task。
2).如果DUT中包含双向信号(inout),在编写testbench时要注意。需要一个reg变量来表示其输入,还需要一个wire变量表示其输出。
3).如果initial块语句过于复杂,可以考虑将其分为互补相干的几个部分,用数个initial块来描述。在仿真时,这些initial块会并发运行。这样方便阅读和修改。
4).每个testbench都最好包含$stop语句,用以指明仿真何时结束。
5).加载测试向量时,避免在时钟的上下沿变化,比如数据最好在时钟上升沿之前变化,这也符合建立时间的要求。
4.一个简单的例子
module counter (clk, reset, enable, count);
input clk, reset,
output [3:0]
always @ (posedge clk)
if (reset == 1'b1) begin
count <= 0;
end else if ( enable == 1'b1) begin
count <= count + 1;
module counter_
reg clk, reset,
wire [3:0]
counter U0 (
.reset&& (reset),
.enable (enable),
.count&& (count)
initial begin
reset = 0;
enable = 0;
#5&& clk =&& !
initial&& begin
$dumpfile ("counter.vcd");
initial&& begin
$display("\t\ttime,\tclk,\treset,\tenable,\tcount");
$monitor("‰d,\t‰b,\t‰b,\t‰b,\t‰d",$time, clk,reset,enable,count);
&&& #100&& $
//Rest of testbench code after this line
&& endmodule
5&& 双向端口
这个我没用过,完全是从网上google的,如果有问题,大家再讨论吧
芯片外部引脚很多都使用inout类型的,为的是节省管腿。一般信号线用做总线等双向数据传输的时候就要用到INOUT类型了。就是一个端口同时做输入和
inout在具体实现上一般用三态门来实现。三态门的第三个状态就是高阻'Z'。当inout端口不输出时,将三态门置高阻。这样信号就不会因为两端同时
输出而出错了,更详细的内容可以搜索一下三态门tri-state的资料.
1 使用inout类型数据,可以用如下写法:
inout data_
input data_
reg data_//data_inout的映象寄存器
assign data_inout=link_data?data_reg:1’//link_data控制三态门
//对于data_reg,可以通过组合逻辑或者时序逻辑根据data_in对其赋值.通过控制link_data的高低电平,从而设置data_inout是输出数据还是处于高阻态,如果处于高阻态,则此时当作输入端口使用.link_data可以通过相关电路来控制.
2 编写测试模块时,对于inout类型的端口,需要定义成wire类型变量,而其它输入端口都定义成reg类型,这两者是有区别的.
当上面例子中的data_inout用作输入时,需要赋值给data_inout,其余情况可以断开.此时可以用assign语句实现:assign
data_inout=link?data_in_t:1’其中的link ,data_in_t是reg类型变量,在测试模块中赋值.
另外,可以设置一个输出端口观察data_inout用作输出的情况:
Wire data_
Assign data_out_t=(!link)?data_inout:1’
else,in RTL
inout use in top module(PAD)
dont use inout(tri) in sub module
也就是说,在内部模块最好不要出现inout,如果确实需要,那么用两个port实现,到顶层的时候再用三态实现。理由是:在非顶层模块用双向口的话,该
双向口必然有它的上层跟它相连。既然是双向口,则上层至少有一个输入口和一个输出口联到该双向口上,则发生两个内部输出单元连接到一起的情况出现,这样在
综合时往往会出错。
对双向口,我们可以将其理解为2个分量:一个输入分量,一个输出分量。另外还需要一个控制信号控制输出分量何时输出。此时,我们就可以很容易地对双向端口建模。
module dual_port (
inout_pin,
inout inout_
wire inout_
wire input_of_
wire output_of_
assign input_of_inout = inout_
assign inout_pin = out_en ? output_of_inout : 高阻;
可见,此时input_of_inout和output_of_inout就可以当作普通信号使用了。
在仿真的时候,需要注意双向口的处理。如果是直接与另外一个模块的双向口连接,那么只要保证一个模块在输出的时候,另外一个模块没有输出(处于高阻态)就可以了。
如果是在ModelSim中作为单独的模块仿真,那么在模块输出的时候,不能使用force命令将其设为高阻态,而是使用release命令将总线释放掉
很多初学者在写testbench进行仿真和验证的时候,被inout双向口难住了。仿真器老是提示错误不能进行。下面是我个人对inout端口写
testbench仿真的一些总结,并举例进行说明。在这里先要说明一下inout口在testbench中要定义为wire型变量。
先假设有一源代码为:
module xx(data_inout , ........);
inout data_
........................
assign data_inout=(! link)?datareg:1'
方法一:使用相反控制信号inout口,等于两个模块之间用inout双向口互连。这种方法要注意assign 语句只能放在initial和always块内。
module test();
wire data_
initial begin
..........
assign data_inout=link?data_reg:1'
方法二:使用force和release语句,但这种方法不能准确反映双向端口的信号变化,但这种方法可以反在块内。
module test();
wire data_
&&& //延时
force data_inout=1'
&&& //强制作为输入端口
...............
release data_
//释放输入端口
很多读者反映仿真双向端口的时候遇到困难,这里介绍一下双向端口的仿真方法。一个典型的双向端口如图1所示。
其中inner_port与芯片内部其他逻辑相连,outer_port为芯片外部管脚,out_en用于控制双向端口的方向,out_en为1时,端口为输出方向,out_en为0时,端口为输入方向。
用Verilog语言描述如下:
module bidirection_io(inner_port,out_en,outer_port);
input out_
inout[7:0] inner_
inout[7:0] outer_
assign outer_port=(out_en==1)?inner_port:8'
assign inner_port=(out_en==0)?outer_port:8'
用VHDL语言描述双向端口如下:
use IEEE.STD_LOGIC_1164.ALL;
entity bidirection_io is
port ( inner_port : inout std_logic_vector(7 downto 0);
out_en : in std_
outer_port : inout std_logic_vector(7 downto 0) );
end bidirection_
architecture behavioral of bidirection_io is
outer_port'Z');
inner_port'Z');
仿真时需要验证双向端口能正确输出数据,以及正确读入数据,因此需要驱动out_en端口,当out_en端口为1时,testbench驱动
inner_port端口,然后检查outer_port端口输出的数据是否正确;当out_en端口为0时,testbench驱动
outer_port端口,然后检查inner_port端口读入的数据是否正确。由于inner_port和outer_port端口都是双向端口(在
VHDL和Verilog语言中都用inout定义),因此驱动方法与单向端口有所不同。
验证该双向端口的testbench结构如图2所示。
这是一个self-checking testbench,可以自动检查仿真结果是否正确,并在Modelsim控制台上打印出提示信息。图中Monitor完成信号采样、结果自动比较的功能。
testbench的工作过程为
1)out_en=1时,双向端口处于输出状态,testbench给inner_port_tb_reg信号赋值,然后读取outer_port_tb_wire的值,如果两者一致,双向端口工作正常。
2)out_en=0时,双向端口处于输如状态,testbench给outer_port_tb_reg信号赋值,然后读取inner_port_tb_wire的值,如果两者一致,双向端口工作正常。
用Verilog代码编写的testbench如下,其中使用了自动结果比较,随机化激励产生等技术。
`timescale 1ns/10ps
module tb();
reg[7:0] inner_port_tb_
wire[7:0] inner_port_tb_
reg[7:0] outer_port_tb_
wire[7:0] outer_port_tb_
reg out_en_
out_en_tb=0;
inner_port_tb_reg=0;
outer_port_tb_reg=0;
repeat(20)
out_en_tb=i[0]; //randomize out_en_tb
inner_port_tb_reg=$ //randomize data
outer_port_tb_reg=$
//**** drive the ports connecting to bidirction_io
assign inner_port_tb_wire=(out_en_tb==1)?inner_port_tb_reg:8'
assign outer_port_tb_wire=(out_en_tb==0)?outer_port_tb_reg:8'
//instatiate the bidirction_io module
bidirection_io bidirection_io_inst(.inner_port(inner_port_tb_wire),
.out_en(out_en_tb),
.outer_port(outer_port_tb_wire));
//***** monitor ******
always@(out_en_tb,inner_port_tb_wire,outer_port_tb_wire)
if(outer_port_tb_wire===inner_port_tb_wire)
$display("\n **** time=%t ****",$time);
$display("OK! out_en=%d",out_en_tb);
$display("OK! outer_port_tb_wire=%d,inner_port_tb_wire=%d",
outer_port_tb_wire,inner_port_tb_wire);
$display("\n **** time=%t ****",$time);
$display("ERROR! out_en=%d",out_en_tb);
$display("ERROR! outer_port_tb_wire != inner_port_tb_wire" );
$display("ERROR! outer_port_tb_wire=%d, inner_port_tb_wire=%d",
outer_port_tb_wire,inner_port_tb_wire);
6. 高级用法
比如pli之类的东西,我也没用过。。。有需要的,大家再讨论
总体感觉,testbench是个很难的事情,这里讨论的只是一些最基本的东西。真正有技术含量的是testcase的设计,设计阶段合理层次设计以及模
块划分等等,我没有做过很大的项目,所以这方面也没有办法提供更多的帮助。经验丰富的大牛不妨出来讲讲经验,^_^
阅读(21348) | 评论(0) | 转发(2) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。VHDL上机手册(基于XilinxISE&Mod;________________________;1ISE软件的运行及ModelSim的配置2创建;3创建一个VHDL源文件框架4利用计数器模板向导;6创建Testbench波形源文件7设置输入仿真;*8调用ModelSim进行仿真简介;9调用ModelSim进行行为仿真(Simula;11调用ModelSi
VHDL上机手册(基于Xilinx ISE & ModelSim)
___________________________________________________
ISE 软件的运行及ModelSim 的配置 2
创建一个新工程 3
创建一个VHDL源文件框架 4
利用计数器模板向导生成设计 *5
创建Testbench波形源文件 7
设置输入仿真波形 *8
调用ModelSim 进行仿真简介 9
调用ModelSim 进行行为仿真(Simulate Behavioral Model) 10
转换后仿真(Simulate Pose-Translate VHDL Model) 11
调用ModelSim 进行映射后仿真(Simulate Post-Map VHDL Model) 12
布局布线后的仿真( Simulate Post-Place&Route VHDL Model) ___________________________________________________
1 VHDL上机手册(基于Xilinx ISE & ModelSim)
1. ISE 软件的运行及ModelSim 的配置
单击“开始->程序->Xilinx ISE6->Project Navigator”,进入ISE 软件。
为了能够使用ModelSim 进行仿真,选择菜单Edit->Preferences…,选择选项卡Partner Tools,出现界面如图1 所示。单击按钮 找出ModelSim.exe 文件,单击“确定”。需要注意的是这方面的设置与以前ISE 版本不同,在ISE4.2 中设置是这样的。但在ISE5.1 以及ISE5.2 中是指定ModelSim.exe 文件所在的目录,而ISE6.1 的设置与ISE4.2 的设置相同。单击“确定”关闭该窗口,关闭ISE(这一步非常重要,否则可能不能在ISE 中调用ModelSim 进行仿真),再重新进入ISE 既可用调用ModelSim 对设计进行仿真了。
图1 第三方工具设置窗口
创建一个新工程
Step1. 单击“开始->程序->Xilinx ISE6->Project Navigator”,进入ISE 软件。
Step2. 选择File->New Project…,出现如图2 所示的窗口。这个窗口与以前版本的差别较大,以前的版本出现的窗口中可以直接选取器件类型、封装、门数、速度等级等信息。而在ISE6.1 中需要单击“下一步”才能看到这些设置信息。在本例中,我们先选择工程存放的路径,然后输入工程名称。系统自动为每一个工程设定一个目录,目录名为工程名。再选择顶层模块类型为HDL。
图2 新工程项对话框
(其他几种类型说明如下:Schematic为原理图输入类型,类似于我们制作PCB 原理图时的情况,可以从库中选取器件,也可以用HDL 语言来生成器件,在后续章节会介绍原理图为设计输入的情况;EDIF为网表输入类型,EDIF 是Electronic Data Interchange Format 的缩写,是一种描述设计网表的标准的工业文件格式,可以由第三方工具生成,在ISE 中可以将其作为一种标准的输入格式。NGC 文件是一种包含了逻辑设计数据和约束的网表,所谓约束是指FPGA 设计中的一些特定的要求,例如,我们分配设计中的信号到具体的管脚时,需要一个文件来指定如何分配,这就是一种约束文件,由于NGC 网表包含了设计和约束,因此一个文件足够描述一 3 个设计了。NGC/NGO 和EDIF 都可以在ISE 外由其他综合工具生成也可由ISE 生成。如果我们需要用ISE 作为设计输入,需要选择Schematic 或HDL 作为顶层模块类型;如果已经完成的设计文件为ABEL、Verilog或VHDL,应选择HDL 为顶层模块类型;如果已经完成的设计文件为原理图,这里应该选择Schematic 作为顶层模块类型。)
Step3. 单击“下一步”,出现如图3 所示的窗口,在该窗口中来选择设计实现时所用的器件。在包含FPGA 的PCB 板子做出来以前,我们选择不同类型的FPGA 进行测试,看看FPGA 的资源是否够用,在PCB 板子做出来以后,我们在这里的选择与PCB板上的FPGA 必须一致。否则生成的下载文件无法配置到FPGA 中。此处若选择错了,也没有关系,因为后面可以随时修改这些设置。其中DeviceFamily 表示目标器件的类型;Device 表示目标器件的具体型号;Package 表示器件的封装;SpeedGrade 表示器件的速度等级。这里我们选择器件为Spartan2E,xc2s100,tq144,-6。其中xc2s100中的100 表示器件为10 万门,tq144 表示器件有144 个管脚。
图3 设置工程所用的器件参数
Step4. 因为这里我们重新编写VHDL 源代码,而不是使用以前设计好的源代码,故再单击“下一步”,“下一步”,单击“完成”,工程创建完毕。
Step5. 这时的界面如图4 所示,这里需要关注的是界面左上角出现的小框为我们所有的源 4 文件的管理窗口,在其下面的窗口为我们选择不同的源文件时其所有可能操作的显示窗口;右半部分窗口为我们设计输入代码的窗口;下面的窗口为编译等信息的显示窗口。这里与以前版本不同的地方在于编译输入窗口这里将Warnings 和Errors 可以分开显示。我们可以在输入不同文件后选中不同的文件,看看进程窗口中的变化。这样,我们新建了一个工程,下一步就要在工程中输入一些设计文件来实现我们的设计。
图4 创建新工程后的ISE 界面
创建一个VHDL源文件框架
在本小节我们向刚刚创建的工程中添加设计文件来实现要求的功能。按照以下步骤建立一个计数器的VHDL 文件描述。注意这里仅仅新建一个有框架的文件,下一小节将向该文件中添加具体代码。
5 三亿文库包含各类专业文献、专业论文、中学教育、高等教育、幼儿教育、小学教育、行业资料、51VHDL上机手册(基于Xilinx ISE & ModelSim)等内容。 
 Testbench波形源文件 7 调用ModelSim 进行行为仿真(Simulate Behavioral Model) () VHDL上机手册(基于Xilinx ISE 12.3 & ModelSim) 上机手册(基于 上机手册 ) 1....  VHDL上机手册(基于Xilinx ... 19页 2财富值喜欢此文档的还喜欢 Xilinx ISE软件...三方软件 在 PC 上安装完 ISE 之后,还需要安装第三方仿真软件,如 ModelSim 等...  VHDL上机手册(基于Xilinx ISE & ModelSim)VHDL上机手册(基于Xilinx ISE & ModelSim)隐藏&& VHDL上机手册(基于Xilinx ISE & ModelSim) 上机手册(基于 上机手册 ) ...  ISE与modelsim的联合方法_互联网_IT/计算机_专业资料。先安装 Xilinx ISE 14.4,后安装 Modelsim 10.1,安装并破解。 1、破解之后先对 Xilinx 仿真库进行编译,...  其中 ISE、ModelSim 软件和 Synplify 软件不同版本...VHDL Module:VHDL 模块类型。 VHDL Library:VHDL 库...end endmodule 4.3.1 基于 Xilinx XST 的综合 所谓...  在modelsim 中添加 xilinx 仿真库在 xilinx 安装目录下 E:\Xilinx\14.6\ISE_...(选择 Modelsim SE) 点击 Next 之后,如下图所示。 (建议选择 Both VHDL and...  5、 如果我们要进行 Synplify、ISE、Modelsim 的联合后仿真的话,我们还需要编译...这个文件在 Xilinx 安装盘:\Xilinx\verilog\src 下。VHDL 不需要第 3 个文 ...  Xilinx ISE Win 10下的问题以及联合Modelsim使用_计算机硬件及网络_IT/计算机_...VHDL上机手册(基于Xilin... 17页 免费
Xilinx ISE 使用入门 23页 免费

我要回帖

更多关于 生成eclipse工程文件 的文章

 

随机推荐