VHDL上机手册Word格式文档下载.docx
- 文档编号:17382803
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:13
- 大小:475.31KB
VHDL上机手册Word格式文档下载.docx
《VHDL上机手册Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《VHDL上机手册Word格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。
3创建一个VHDL源文件框架
在本小节我们向刚刚创建的工程中添加设计文件来实现要求的功能。
按照以下步骤建立一个计数器的VHDL文件描述。
注意这里仅仅新建一个有框架的文件,下一小节将向该文件中添加具体代码。
在这里我们以一个具有复位(reset)、使能(ce)、置数(load)、计数方向控制(dir)功能的计数器为基础进行设计。
其方块图如图5所示。
其中CLK为输入计数时钟信号,系统在该信号的驱动下开始工作;
RESET为复位信号,在上升沿处,输入复位为全零;
CE为使能信号,为1时计数正常进行,为0时停止计数;
LOAD为置数信号,当在时钟上升沿该信号为1时,将DIN0~DIN3分别置给COUT0~COUT3。
DIR为计数方向控制,为1时递增计数,为0时递减计数。
这些功能描述只是我们的设计目标,或称为设计需求,我们在设计一个系统时,第一步就是要明确我们的设计要求。
图5计数器方块图
Step1.选择Project->
NewSource;
(或在SourcesinProject窗口中单击鼠标右键选择“NewSource…”)出现如图6所示的窗口;
图6源程序的类型选择
Step2.选择VHDLModule(VHDL模块)作为新建源文件的类型;
Step3.在文件名中键入“FourBitsCounter”;
Step4.单击“下一步”;
Step5.单击“下一步”;
Step6.单击“完成”,完成这个新源程序的创建。
新源程序文件FourBitsCounter.vhd将会显示在HDL编辑窗口中,它包括Library,Use,Entity,Architecture等语句。
4利用计数器模板向导生成设计
设计文件建立之后,我们就可以向其中填写代码了。
我们可以直接书写HDL代码,也可以利用ISE的语言模板(ISELanguageTemplate)工具来辅助我们书写HDL代码。
在这里我们使用语言模板,选择其中的计数器描述来完成本源程序的设计。
Step1.选择Edit->
LanguageTemplates打开语言模板,或者通过单击按钮来打开语言模板,如图7所示;
图7计数器语言模板
Step2.在LanguageTemplates中通过单击“+”来展开VHDL下的综合模板(SynthesisTemplates);
Step3.从VHDL综合模板中选择计数器模板(CounterTemplate),并把它粘贴到源程序counter.vhd的begin和end之间。
(或在CounterTemplate上单击右键选择“Useincounter.vhd”,建议直接复制过去);
Step4.关闭LanguageTemplates窗口;
Step5.将带有注释符号“--”的计数器端口定义语句剪切并粘贴到计数器的实体(entity)描述中。
这些语句如下所列:
--CLK:
inSTD_LOGIC;
--RESET:
--CE,LOAD,DIR:
--DIN:
inSTD_LOGIC_VECTOR(3downto0);
--COUNT:
inoutSTD_LOGIC_VECTOR(3downto0);
Step6.去掉上述语句中的注释符号;
Step7.去掉上述最后一个端口定义语句后的分号;
此时的程序如图8所示。
Step8.选择File->
Save,保存counter.vhd源程序。
图8修改后的计数器描述文件
5仿真
我们可以通过设置计数器模块的输入来观察仿真输出,以测试我们编写的VHDL源文件是否满足逻辑功能要求。
我们建立的testbench波形将被用于与仿真软件ModelSim的连接,用来验证所设计的计数器的功能和延时是否达到要求。
6创建Testbench波形源文件
在仿真前,首先创建一个Testbench波形源文件,与以前版本不同的是,该文件不是在HDLBencher(ISE集成的一个工具,用于设置输入波形)中打开,而是在ISE中打开,这也是ISE6.1不同于以前版本的地方。
具体步骤如下:
Step1.打开上一节所建立的工程;
Step2.选择Project->
NewSource…,(或通过在SourcesinProject中单击右键选择“NewSource…”),出现如图9所示的窗口;
图9创建波形源文件
Step3.选择文件类型为TestBenchWaveform;
Step4.键入文件名“TestWave”,如图9中所示;
Step5.单击“下一步”,在本步骤中可以将波形文件与VHDL文件进行关联。
Step6.单击“下一步”;
Step7.单击“完成”;
Step8.此时,HDLBencher程序自动启动,如图10所示,我们可以选择哪一个信号是时钟信号并可以输入所需的时序需求;
在这里我们采用系统的默认值,单击“OK”按钮;
图10仿真时间参数的设置
Step9.这时出现了如图11所示的波形;
图11新建的波形文件
7设置输入仿真波形
我们可以打开刚刚建立的波形文件,来初始化输入波形,步骤如下:
Step1.单击波形图中的蓝色方块来设置波形电平的高低,并将仿真时间线(图中的垂直的蓝色线)拉到第10个时钟周期处,设置后的波形如图12所示;
图12HDLBencher中输入波形的设置
Step2.单击图12中工具栏上的图标,将波形文件保存。
Step3.查看代码覆盖率统计,单击图12中工具栏上的图标,显示出代码覆盖率统计,统计结果如图13所示。
因为还没有输出,所有输出的统计均为零。
代码覆盖率是一种测试术语,它可以表示运行完当前仿真时,所运行的代码占所有代码的比例。
其中的Assign为赋值情况代码占所有代码的比例,Toggle为上升下降沿代码占所有代码的比例。
因此,代码覆盖率越高越好。
图13代码覆盖率统计结果
8调用ModelSim进行仿真简介
其实在上一节中产生预定输出时,已经使用了ModelSim,只是我们在界面上看不出来而已。
这一小节我们在ISE中调用ModelSim进行仿真,这里讨论的仿真仍然是基于波形文件的,因此不涉及ModelSim中过多的知识。
在ModelSim中可以进行的仿真有SimulateBehavioralModel(仿真行为模型)、SimulatePose-TranslateVHDLModel(转换后仿真)、SimulatePost-MapVHDLModel(映射后仿真)以及SimulatePost-Place&
RouteVHDLModel(布局布线后仿真)。
其实,转换(Translate)、映射(Map)以及布局布线(Place&
Route)是FPGA及CPLD设计实现时的不同阶段。
要实现一个设计,首先要进行编译或转换(Translate),转换是将HDL描述转换为RTL描述,转换后仿真可以认为是RTL级仿真,而且仅仅是逻辑仿真,在仿真中不包含任何的器件、时延等信息,仅仅用于验证设计转换为RTL级描述后是否满足功能要求;
下面就是综合,在该阶段,设计文件按照约束文件与Xilinx的原型库联系起来,映射(Map)则是将当前设计映射到具体器件的特定逻辑单元以及特定的工艺,所谓特定的逻辑单元是FPGA中的基本的逻辑块,所谓工艺是FPGA的制作工艺,因此,映射后仿真是将设计实现到具体器件具体逻辑单元具体工艺后进行的逻辑仿真,类似于我们制作PCB时画完原理图后进行的仿真,此时的仿真已经考虑到了器件延时,由于没有布线,因此,连线的长度等信息就不能知道了,故此时的仿真是仅仅考虑到逻辑单元延时的仿真,而没有考虑到连线的电容、电阻、长度等信息。
在亚微米(0.35微米)以上的工艺中,连线的延时可以不太重视,而在深亚微米工艺中,连线的影响就不可小看了,为了保证深亚微米设计的成功,需要在布局布线前对设计进行时序仿真,这时候修改错误对设计进度的影响要小很多。
最后是布局布线后仿真,为进行这个仿真,首先要进行布局布线,类似于我们对PCB的布线,之后要进行参数提取,提取出互连线的长度、电阻、电容等信息,然后就可以根据这些信息进行仿真了,这时候的仿真中包括了器件本身的延时和互连线的延时等等部分,这种仿真也最近似实际情况。
也许读者会疑惑,有了映射后仿真为什么还需要转换后仿真呢?
这是因为许多EDA工具只能认识RTL描述,而人们习惯使用高级的HDL描述,这就需要转换,如果转换后的RTL描述是错误的,那么后续的过程还有什么意义呢,故还是需要进行转换后仿真的,尽管一般转换阶段不会发生什么错误。
9调用ModelSim进行行为仿真(SimulateBehavioralModel)
如上所述,行为仿真验证所设计的模块的功能。
未涉及到设计实现中的时延等问题。
Step1.在如图14所示的SourcesinProject窗口中,选中TestWave文件;
图14SourcesinProject窗口
Step2.在如图7-15所示的ProcessesforSource:
”TestWave”窗口中,通过单击“+”展开它;
图15ProcessesforCurrentSource窗口
Step3.双击SimulateBehavioralVHDLModel,ModelSim会自动运行,仿真结果出现在ModelSim的波形窗口(WaveWindows)中,如图16所示,从双击命令到所有窗口的出现都是在ISE自动创建的仿真宏文件(.fdo)的控制下来完成了,用户可以在工程存放的路径下看到该文件counter_tbw.fdo;
用记事本打开该文件可以看到其内容。
图16ModelSim行为仿真结果
Step4.打开波形窗口,单击按钮,可以将所有波形在屏幕中显示,仿真结果如图16所示。
可以看到,时钟上升沿和计数值改变的时刻之间相差为零(图中两根竖线之间的间距为零)。
Step5.关闭ModelSim主窗口,确认退出ModelSim。
10转换后仿真(SimulatePose-TranslateVHDLModel)
如上所述,转换后仿真是将设计转换为RTL级描述后进行的仿真。
在其中不包含实现器件的信息。
具体仿真步骤与行为仿真相同。
只是在第三步,双击SimulatePose-TranslateVHDLModel就可以了。
仿真波形图如图17所示。
图17ModelSim转换后仿真结果
11调用ModelSim进行映射后仿真(SimulatePost-MapVHDLModel)
映射后仿真是设计映射到具体工艺和器件后进行的仿真,在其中包含了器件本身的延时信息。
只是在第三步,双击SimulatePost-MapVHDLModel就可以了。
仿真波形图如图18所示。
可以看到,时钟上升沿和计数值改变的时刻之间相差6794ps(图中两根竖线之间的间距),说明了器件的延时为6794ps。
图18ModelSim映射后仿真结果
12布局布线后的仿真(SimulatePost-Place&
RouteVHDLModel)
布局布线后仿真利用了从布局布线中提取出的一些信息,其中包括了目标器件及互连线的时延、电阻、电容等信息。
只是在第三步,双击SimulatePost-Place&
RouteVHDLModel就可以了。
仿真波形图如图19所示。
可以看到,时钟上升沿和计数值改变的时刻之间相差8296ps(图中两根竖线之间的间距),说明了器件的延时加上互连线延时为6794ps。
图19ModelSim布局布线后仿真结果
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VHDL 上机 手册