基于HDL的设计输入_第1页
基于HDL的设计输入_第2页
基于HDL的设计输入_第3页
基于HDL的设计输入_第4页
基于HDL的设计输入_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于HDL的设计输入

何宾2011.09

基于HDL的设计输入-本章概要

该章主要是通过一个设计实例介绍基于HDL的设计流程。通过这个设计实例,读者可以掌握基于HDL语言的基本设计流程。这个设计基于HDL语言和IP核。本章是HDL基本设计流程的第一部分,当设计输入完成后,应依次完成行为仿真、设计实现(翻译、映射和布局布线)、时序仿真、下载和配置的基本设计流程。

基于HDL的设计输入-软件环境

下图给出了ISE的主界面窗口。ISE主界面分为4个子窗口。

基于HDL的设计输入-软件环境

左上角的窗口是源文件窗口,设计工程所包括的文件以分层的形式列出。在该子窗口的下面是处理窗口,该窗口描述的是对于选定的设计文件可以使用的处理流程。在ISE主界面最下面是脚本窗口,在该窗口中显示了消息、错误和警告的状态。同时还有Tcl脚本的交互和文件中查找的功能。在ISE的右上角是多文档的窗口,在该窗口可以查看html的报告,ASCII码文件、原理图和仿真波形。通过选择View->RestoreDefaultLayout可以恢复界面的原始设置。

基于HDL的设计输入-软件环境1、源文件(source)子窗口这个窗口有三个标签:源(Source)、Snapshots(快照)、Library(库)。源标签内显示工程名、指定的芯片和设计有关的文档。在设计视图的每一个文件都有一个相关的图标,这个图标显示的是文件的类型(HDL文件、原理图、IP核和文本文件)。‘+’表示该设计文件包含了更低层次的设计模块。标签内显示的是目前所打开文件快照。一个快照是在该工程里所有文件的一个拷贝。通过该标签可以察看报告、用户文档和源文件。在该标签下所有的信息都是只读的.库标签内显示与当前打开工程相关的库。

基于HDL的设计输入-软件环境2、处理(process)子窗口在该窗口只有一个处理标签。该标签有下列功能:增加已有文件;创建新文件;察看设计总结(访问符号产生工具,例化模板,察看命令行历史和仿真库编辑);用户约束文件(访问和编辑位置和时序约束);综合(检查语法、综合、察看RTL和综合报告);设计实现(访问实现工具,设计流程报告和其它一些工具);产生可编程文件(访问配置工具和产生比特流文件)

基于HDL的设计输入-软件环境3、脚本(transcript)子窗口脚本子窗口有5个缺省的标签:Console,error,warnings,Tclshell,findinfile。

1)Console标签显示错误、警告和信息。X表示错误,!表示警告。

2)Warning标签只显示警告消息。

3)Error标签只显示错误消息。

4)Tclshell标签是与设计人员的交互控制台。除了显示错误、警告和信息外,还允许设计人员输入ISE特定命令。

5)Findinfile标签显示的是选择Edit>FindinFile操作后的查询结果。基于HDL的设计输入-软件环境4、工作区(Workspace)子窗口工作区子窗口提供了设计总结、文本编辑器、ISE仿真器/波形编辑器、原理图编辑器功能。设计总结提供了关于该设计工程的更高级信息,包括信息概况、芯片资源利用报告、与布局布线相关性能数据、约束信息和总结信息等。源文件和其它文本文件可以通过设计人员指定的编辑工具打开。编辑工具的选择由Edit->Preference属性决定,缺省的是ISE的文本编辑器,通过该编辑器可以编辑源文件和用户文档,也可以访问语言模板。基于HDL的设计输入-软件环境

通过ISE仿真器和波形编辑器创建和仿真测试平台。波形编辑器提供了图形化的激励源和期望响应输出,然后产生使用VHDL/Verilog语言描述的测试平台。原理图编辑器集成在ISE中,原理图编辑器是采用图形的方式创建和查看逻辑设计。基于HDL的设计输入-工程建立

在建立工程前,需要将示例文件从光盘上拷到创建工程的路径下。该设计完成一个比赛用的秒表计时器(设计文件通过/support/techsup/tutorials/tutorials11.htm资源下载)。

1、在桌面上,双击ISE11的图标或者在开始菜单->所有程序->XilinxISE11->ProjectNavigator。在ISE主界面中选择File->NewProject。如图6.2所示,桌面出现下面的界面;

基于HDL的设计输入-工程建立基于HDL的设计输入-工程建立2、在ProjectLocation域内,给出保存工程的路径;

3、在Projectname域内,给出工程名wtut_vhd;

4、在Top-LevelSourceType域内,选择HDL,单击下一步。出现图6.3图形界面。

5、在DeviceProperties界面中,选择合适的产品范围(productcategory)、芯片的系列(Family)、具体的芯片型号(Device)、封装类型(Package)、速度信息(speed),此外,在该界面中还要选择综合工具(SynthesisTool)、仿真工具(Simulator)和设计语言(PreferredLanguage)。图6.3给出了示例中的参数配置;基于HDL的设计输入-工程建立第6章基于HDL的设计输入-工程建立6、连续两次用鼠标点击下一步按钮,出现图6.4添加源文件的界面;

基于HDL的设计输入-工程建立

在该界面中,点击“AddSource”按钮。添加下列文件:clk_div_262k,lcd_control,statmach,stopwatch,并单击open按钮;

7、单击下一步按钮,然后完成新工程的建立;

8、在确认所有的设计文件和Synthesis/Imp+Simulation关联后,单击ok;基于HDL的设计输入-工程建立

在AddingSourceFiles…界面基于HDL的设计输入-设计描述

在该设计中,采用了层次化的、基于VHDL语言的设计流程。表明该设计的顶层文件是由VHDL语言生成,而顶层文件以下的其它模块可以用VHDL、原理图或IP核生成。该章将要对一个还没有设计完成的工程进行进一步的处理,直到最终完成这个设计。通过这个设计流程,读者可以完成并且产生其它模块。当设计完成后,就可以通过仿真验证设计的正确性。

基于HDL的设计输入-设计描述1、该设计有下面的输入信号:strtstop:启动和停止秒表;reset:复位秒表00:00:00状态,且秒表在时钟模式下;clk:外部输入时钟信号;mode:控制时钟和秒表模式。只有当时钟或定时器处于未计数状态时,该信号才起作用;lap_load:这个信号有两个功能。在时钟模式下,显示当前的时钟值。在定时器模式下,当定时器没有计数时,从ROM中加载预设的值并显示;基于HDL的设计输入-设计描述2、该设计有下面的输出信号:

lcd_e,lcd_rs,lcd_rw:这些控制信号用于控制LCD的显示;

sf_d[7:0]:向LCD显示提供并行数据;

基于HDL的设计输入-设计描述3、该设计有以下功能模块:

clk_div_262k:将输入时钟进行262144的分频,将26.2144MH时钟转换成占空比为50%的100Hz时钟信号。

DCM1:数字时钟管理器的IP核,提供内部时钟反馈、频率的输出控制和占空比的修正。CLKFX_OUT将50MHz的时钟转换为26.2144MHz时钟输出。

Debounce:原理图模块实现秒表的strstop,mode,lap_load信号的去抖动。

lcd_control:对LCD的初始化和LCD的显示进行控制。基于HDL的设计输入-设计描述statmach:在状态图(StateDigram)编辑器中定义和实现状态机模块,并控制秒表。timer_preset:通过核产生器(coregenerator)产生64X20的ROM,这个ROM在00:00:00到9:59:59的范围内保存了64个预设置的时间。

time_cnt:在0:00:00到09:59:59的范围内以up/down模式工作的计数器。这个模块有5个4比特的输出,用来描述当前秒表的输出数字。基于HDL的设计输入-添加设计和检查

在这个例子的完成过程中,将对HDL文件进行检查,修改语法错误,并建立一个VHDL模块,添加IP核和时钟模块,通过使用混合设计方法完成所有设计输入流程。所有后面的设计流程都基于这个设计示例完成。图6.5显示的是上面的工程建立完成后,在ISE主界面的source子窗口的界面。从该图可以看到在设计工程中虽然已经例化了timer_cnt模块,但没有该模块的HDL的描述(文件旁有“?”标识)。为了添加该文件并进行检查,按照下面的步骤将完成添加该文件并进行语法检查。基于HDL的设计输入-添加设计和检查1、选择project->AddSource,选择并打开time_cnt.vhd文件,确保该模块与Synthesis/Imp+Simulation选项关联,并单击ok按钮;

2、对该设计文件进行语法检查。在source子窗口,选择time_cnt.vhd文件。在process子窗口单击‘+’,展开DesignUtility,并双击CheckSyntax;基于HDL的设计输入-添加设计和检查3、在检查语法的过程中,在Transcript子窗口中出现4个错误信息的提示。根据错误的提示信息修改文件,并保存,然后再次进行检查,直到没有语法错误为止。并保存文件。图6.5新建工程的源文件窗口基于HDL的设计输入-创建基于HDL的模块

本节将介绍使用ISE的文本编辑器VHDL语言创建模快。使用VHDL语言创建的模块用于该秒表的去抖动功能。

1、选择Project>NewSource,弹出图6.6的窗口,新文件建立的导向窗口。

基于HDL的设计输入-创建基于HDL的模块图6.6新建文件窗口

IP核生成向导实现约束文件

原理图状态图

仿真波形平台

Verilog模块Verilog测试模块

VHDL模块VHDL库VHDL包VHDL测试模块

在线逻辑分析仪嵌入式处理基于HDL的设计输入-创建基于HDL的模块

在窗口左边选择VHDLModule,在Filename下面的输入框输入debounce文件名,然后点击下一步,出现新文件向导对话框,此时可以进行下列选择,可以通过该向导输入端口的名字和方向,选择是否总线,如果是总线,还需要指明宽度。读者也可以在HDL文件中自己输入,当使用在VHDL中手工添加这种方式的时候,直接单击next按钮即可;否则需要在该界面内指定端口参数。最后,单击完成(finish)按钮生成新文件;基于HDL的设计输入-创建基于HDL的模块

新建文件向导窗口基于HDL的设计输入-创建基于HDL的模块2、如图6.8所示,在ISE的工作区空间,给出使用ISE文件编辑器打开的debounce.vhd文件。可以看出,Xilinx的ISE工具生成了VHDL基本结构框架,这也是ISE具有强大设计功能的体现;基于HDL的设计输入-创建基于HDL的模块图6.8ISE的文件编辑器界面基于HDL的设计输入-创建基于HDL的模块

下面需要的是EDA设计人员需要将结构体空缺的下面的代码的添加到结构体中间。

architecturedebounce_archofdebounceissignalint1,int2,int3:std_logic;beginsig_out<=sig_inorint1orint2orint3;process(clk)isbegin基于HDL的设计输入-创建基于HDL的模块

ifrising_edge(clk)thenint1<=sig_in;int2<=int1;int3<=int2;endif;endprocess;enddebounce_arch;

输入完毕并保存文件,并对该设计文件按照前面的方法进行语法规则检查,直到综合完成为止,在综合过程如果出现错误,则需要对输入的设计文件进行检查。基于HDL的设计输入-IP核产生和例化

IP核生成器(IPcoregenerator)是一个用户图形交互界面工具,通过核产生器可以产生高层次设计模块,例如:存储器、数学函数、通讯和I/O接口的IP核。设计人员可以定制和优化这些IP核,这些IP核充分利用Xilinx的FPGA结构特征,例如:快速进位逻辑、SRL16s和分布式块RAM等。基于HDL的设计输入-timer_preset模块的生成

在本节中,通过IP核产生器生成timer_preset模块。该模块存储了64个值,这些值将来加载到定时器中。

1、在ISE主界面中选择Project->NewSource,弹出NewSourceWizard窗口,在该窗口中选择IP(Coregen&ArchitectureWizard),在Filenamefield中输入timer_preset文件名,点击next按钮;

2、在弹出的NewSourceWizardSelectIP窗口,选择Memory&StorageElements。如图6.9所示,在该界面中选择”RAMs&ROMs”,在展开项中选择distributedMemoryGenerator,点击next和finish按钮;基于HDL的设计输入-timer_preset模块的生成3、弹出6.10的界面,在该界面中选择ROM的Depth,将其设置为64,然后选择DataWidth,将其设置为20,然后将存储器的类型MemoryType设置为ROM,点击下一步;

4、将Inputoptions和Outputoptions设置为NonRegistered(表示输入和输出不需要通过锁存器进行锁存,可以看到在该界面窗口的左面的a[5:0]和spo[19:0]呈黑色显示,其余引脚呈灰色显示(黑色表示引脚在该次设计中有效,灰色表示引脚在该次设计中无效);单击finish按钮。在IP核产生器生成IP核后,产生下面的文件,下面对这些文件的含义进行一些说明:基于HDL的设计输入-timer_preset模块的生成

图6.9IP选择界面基于HDL的设计输入-timer_preset模块的生成图6.10分布式IP核产生器设置界面基于HDL的设计输入-timer_preset模块的生成5.在该界面中,在“CofficientsFile”选项后,点击“Browse”按钮,在工程路径下选择definition1_timws.coe文件作为该存储器的系数文件,用来给存储器写初始值。基于HDL的设计输入-timer_preset模块的生成图6.12核生成器-分布式存储器生成器定制GUI界面基于HDL的设计输入-timer_preset模块的生成

timer_preset.vho/timer_preset.veo文件,这些文件是该IP核的例化模板,通过这个例化模板就可以将IP核添加到该设计中。

timer_preset.vhd/timer_preset.v文件,这些文件是IP核生成的包装文件只用来仿真。

timer_preset.edn文件,该文件是网表文件,该文件在进行网表翻译过程中使用。

timer_preset.xco文件,该文件保存了该模块的配置信息,该文件作为源文件使用。

timer_preset.mif文件,该文件提供了为ROM仿真时的初始设置。基于HDL的设计输入-timer_preset模块的例化

当IP核生成后,下面将在设计中调用生成的IP核。

1)在工程管理窗口,双击stopwatch.vhd文件,将其打开。

2)将光标移动到--InsertCoreGeneratorROMcomponentdeclarationhere。

3)在ISE中选择File->open选项,选择timer_preset.vho,并打开。

4)将VHDL的声明部分代码复制,并通过粘贴插入到光标所指的那一行下面。基于HDL的设计输入-timer_preset模块的例化componenttimer_preset port( a:INstd_logic_VECTOR(5downto0); spo:OUTstd_logic_VECTOR(19downto0));endcomponent;--Synplicityblackboxdeclarationattributesyn_black_box:boolean;attributesyn_black_boxoftimer_preset:componentistrue;基于HDL的设计输入-timer_preset模块的例化5.将该文件的例化部分的代码复制。

your_instance_name:timer_preset portmap( a=>a, spo=>spo);基于HDL的设计输入-timer_preset模块的例化6、然后,粘贴到设计的顶层文件的例化部分,然后通过端口映射将该模块和设计相连。

t_preset:timer_presetportmap(a(5downto0)=>address(5downto0),spo(19downto0)=>preset_time(19downto0));

通过上面的步骤,该IP核模块就添加到该设计文件中了。基于HDL的设计输入-DCM模块的生成DCM模块即数字时钟管理模块,在很多方面都有应用,下面步骤将给出DCM的IP核生成过程:

1、在ISE主界面中选择Project->NewSource,弹出NewSourceWizard窗口,在该窗口中选择IP(Coregen&ArchitectureWizard),在Filenamefield中输入DCM1文件名,点击next按钮;

2、如图6.9所示,在该界面中选择FPGAFeaturesandDesign,在展开项Spartan-3E,Spantan-3A的子项中选择SingleDCMSPv11.2i,点击next和finish按钮;

基于HDL的设计输入-DCM模块的生成基于HDL的设计输入-DCM模块的生成3、弹出XilinxClockWizard-GeneralSetup界面,在该界面进行下面的设置:在“InputClockFrequency”(输入时钟频率),输入50,选择“MHz”;CLKINSource(时钟输入源):External,SinglePhaseShift(相位移动):NONEFeedbackSource(反馈源):InternalFeedbackValue(反馈值):1X基于HDL的设计输入-DCM模块的生成4.然后单击“Advanced”按钮,选择“WaitforDCMlockbeforeDoneSignalgoeshigh”(在Done信号变高前,等待DCM锁定),点击“OK”按钮。

5.点击“Next”按钮,然后再点击“Next”按钮;

6.选择“Useoutputfrequenc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论