ActiveHDL进阶解读课件_第1页
ActiveHDL进阶解读课件_第2页
ActiveHDL进阶解读课件_第3页
ActiveHDL进阶解读课件_第4页
ActiveHDL进阶解读课件_第5页
已阅读5页,还剩85页未读 继续免费阅读

下载本文档

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

文档简介

电子设计自动化技术授课教师:王忆文电子设计自动化技术

Active-HDL进阶Active-HDLFPGAExpress/ISEISEActive-HDLDesignEntryToolsHDLEditor(HDE)BlockDiagramEditor(BDE)StateDiagramEditor(FSM)

TrainingIntroduction一个简单频率计的设计(带BCD计数器、LED数码管显示编码)频率计的基本原理:将输入信号频率与基准时钟频率进行比较频率计的测量使能:即测量状态下START信号为‘1’该设计采用3三种描述模式:HDL编辑器 (HDE)框图编辑器 (BDE)状态图编辑器(FSM)简单频率计框图频率计主要模块Thefollowingblocksareusedinthedesign:Top_frqm --顶层设计(BDE)HEX2LED --LED数码管显示编码模块(HDE)CNT_BCD --4位十进制BCD计数器模块(BDE)

(包含AND2和CNT_4b俩子模块)CONTROL --频率计控制模块(FSM)创建Project(NewDesign)IntheTypethedesignnamefield,enterFRQ_METER设计环境调整在DesignBrowser

点鼠标右键选择NewFolder

选项可以创建自己的文件夹新文件夹省却名为“Folder1”、“Folder2”等,

可以自行改名

比如,我们可以创建名为FUNCTIONAL的文件夹,以便归档我们接下来的设计Top_frqm

--顶层设计(BDE)HEX2LED

--LED数码管显示编码模块

(HDE)CNT_BCD --4位十进制BCD计数器(BDE)

(包含AND2和CNT_4b俩子模块)CONTROL --频率计控制模块(FSM)设计内容1.2

创建HEX2LED显示模块HEX2LEDarchitecture:

用LanguageAssistant功能调取LanguageAssistant窗口:Tools|LanguageAssistant

选择Synthesistemplates/HEX2LED

Converter,用Use

选项将代码放入architecture的begin

end之间.

Note:Thecodeisinsertedwherethecursorislocatedinyourfile.Checkthisbeforeyouinvoketheusecommand.1.3

创建HEX2LED显示模块

SavetheHEX2LED.VHDfile(Ctrl+S)

鼠标选中HEX2LED.VHD拖进FUNCTIONAL文件夹

打开在FUNCTIONAL文件夹中的HEX2LED.VHD,

编译(

F11)Top_frqm

--顶层设计(BDE)HEX2LED

--LED数码管显示编码模块(HDE)CNT_BCD --4位十进制BCD计数器(BDE)

包含两个底层子模块CNT_4b(HDE)AND2 (HDE)CONTROL --频率计控制模块(FSM)设计内容2.CNT_BCD计数器模块描述CNT_BCD是一个同步BCD计数器。CLK

–系统时钟GATE

计数器使能端RESET–非同步RESETBCD_A,BCD_B,BCD_C,BCD_D2.1CNT_4b子模块描述(HDE)architectureCNT_4BofCNT_4BissignalQint:STD_LOGIC_VECTOR(3downto0);begin process(CLK,RESET) begin ifRESET='1'then

Qint<=(others=>'0');

elsifCLK='1'andCLK'eventthen ifENABLE='1'then ifQint=9then

Qint<=(others=>'0'); elseQint<=Qint+1; endif; endif; endif; endprocess; Q<=Qint; FULL<='1'when(Qint=9)else'0';endCNT_4B;2.2

创建与门AND2子元件(HDE)利用NewSourceFileWizard

创建与门AND2

元件(VHDLfile)。它有两输入

A0、A1和一输出Y在AND2.VHD输入一行代码(betweenbeginandendAND2inthearchitecturebody):

Y<=A0andA1;Savethefile,closeit,dragittotheFunctionalfolder,thencompileit.2.3-1创建CNT_BCD模块(BDE)File|New|BlockDiagram选择BlockDiagramWizardNext>

在NewSourceFileWizard-Language窗口选择VHDLNext>NewSourceFileWizard–Name窗口输入CNT_BCDNext>

BDE

的操作步骤:BDEEDIF(ElectronicDataInterchangeFormat)创建CNT_BCD模块(续)

(BDE)Addthein

directionports(STD_LOGIC):CLKGATERESETAddtheout

directionports:(STD_LOGIC_VECTOR):BCD_A[3:0]BCD_B[3:0]BCD_C[3:0]BCD_D[3:0]

2.3-2创建CNT_BCD模块(添加元件)进入添加元件状态,用鼠标左键点中cnt_4bsymbol从工具箱中拖入框图区域四次;此后框图区域如下所示:将and2symbol从Symbol工具箱中拖入框图区域三次。NOTE:进入添加元件状态的方法是,在框图编辑器工具条点击ShowSymbolToolbox

按钮

,即可添加上面的元件。2.3-3创建CNT_BCD模块用同样的方法添加3个and2symbol,然后即可关闭右侧

theSymbolToolbox对应子窗口,接下来就是

画元件间的互连线了。2.3-4创建CNT_BCD模块Wire按钮()画一位互连线(and2与cnt_4b间互连线),Bus按钮()画总线bus(计数器输出端口)2.3-5创建CNT_BCD模块用GlobalWirebutton()在CLK

和RESET输入端口右边化两个黄圈。分别双击黄圈输入名字CLK和RESETglobalwire定义完成后如下图所示:Active-HDLDesignEntryToolsHDLEditor(HDE)BlockDiagramEditor(BDE)StateDiagramEditor(FSM)简单频率计框图HEX2LED

-LED七段码显示转换模(HDE)CNT_BCD-4位十进制BCD计数器模(BDE)

(包含AND2和CNT_4b俩子模块)Top_frqm-顶层设计(BDE)CONTROL-频率计控制模块(FSM)设计内容Top_frqm --顶层设计(带虚拟元件)

(BDE)HEX2LED

--LED数码管显示编码模块(HDE)CNT_BCD --4位十进制BCD计数器(BDE)

(包含AND2和CNT_4b俩子模块)CONTROL

--频率计控制模块(FSM)设计内容3.1创建顶层框图Top_frqmFile|New|BlockDiagram选择BlockDiagramWizardNext>

在NewSourceFileWizard-Language窗口选择VHDLNext>在NewSourceFileWizard–Name窗口输入Top_frqmNext>

在这一部分我们将实现频率计的顶层框图设计,我们还将采用top-down的设计方法创建FSM模块(Control)。

3.2

创建顶层框图Top_frqm

DefinethefollowingportsoftheTop_frqmblockdiagram:

InputPorts:

-F_INPUT

-F_PATTERN

-RESET

-START

OutputPorts:

-LED_A[6:0]

-LED_B[6:0]

-LED_C[6:0]

-LED_D[6:0]ClickFinishBlockDiagramEditor(BDE)screenwithanemptydiagramwillappear.3.3创建顶层框图Top_frqm(虚拟元件)点击Fubbutton(),在F_PATTERN,RESETandSTART输入端口右边创建一个Fub符号,如下图所示:3.4创建顶层框图Top_frqm点击Wirebutton()化三条水平连线,连接F_PATTERN,RESETandSTART端口到U1fub;三个输入pin在Fub中自动创建。按Esc

键回到选择模式。双击“Fub1”label,更改fubname为CONTROL右击fubbody,

选择Edit进入

Fub编辑状态3.5创建顶层框图Top_frqm拖动AddNewPin窗口中的Outpin到Fub右边界,创建Pin1;重复操作创建Pin2。双击Pin1更名为

GATE双击Pin2更名为

END_RESET点击Fub

外面,回答Yes保存。3.6创建顶层框图Top_frqm完成后的Fub如右图所示

(完成顶层设计后,待后续再完善该Fub设计)

接下来完善Top_frqm框图设计:

-oneCNT_BCDmodule

-fourHEX2LEDmodule

(用ShowSymbolToolboxbutton将对应元件拖入框图编辑框)3.7创建顶层框图Top_frqmThediagramwithallsixsymbolsplacedshouldlooklikethis:3.8创建顶层框图Top_frqmThecompletedTop_frqmblockdiagramshouldlooklikethis:Pleasesavethediagram,closeit,dragittotheFunctionalfolderintheDesignBrowserandreopenitHEX2LED

-LED七段码显示转换模(HDE)CNT_BCD-4位十进制BCD计数器模(BDE)

(包含AND2和CNT_4b俩子模块)Top_frqm-顶层设计(BDE)CONTROL-频率计控制模块(FSM)设计内容Top_frqm --顶层设计(BDE)HEX2LED

--LED数码管显示编码模块(HDE)CNT_BCD --4位十进制BCD计数器(BDE)

(包含AND2和CNT_4b俩子模块)CONTROL --频率计控制模块(FSM)设计内容状态转移图FSM(Finite

StateMachine)分类FSM根据输入输出关系可分为两类:摩尔(Moore)型状态机输出由状态决定,与输入无直接关系米利(Mealy)型状态机输出由状态和输入共同决定摩尔(Moore)型状态机摩尔(Moore)型状态机的输出仅仅与当前状态相关。状态寄存器状态逻辑输出逻辑输出当前状态次态输入复位信号时钟信号摩尔(Moore)型状态图1110000S3/0S0/0S1/1S2/01米利(Mealy)型状态机米利(Mealy)型状态机的输出不仅与当前状态相关,而且也与输入信号相关。状态寄存器状态逻辑输出逻辑输出当前状态次态输入复位信号时钟信号米利(Mealy)型状态图1/11/11/00/10/00/00/0S3S0S1S21/1状态机设计状态机的设计方法总是先定义一个复位状态,明确定义状态机的初始状态,并使其可以从不定态中恢复,其次,在每个状态下对每个输出信号赋予一个值。至少存在一个时钟信号,实现状态翻转。也可以存在复位信号,用于同步系统等的运行。4.1创建状态图CONTROL在顶层框图中右击CONTROL

fub,选择Push4.1创建状态图CONTROL选择StateDiagramClickOK4.2

创建状态图CONTROL右击F_PATTERN端口的符号,选择

Properties端口属性选择ClockClickOK该FSMEditor是为异步状态机行为描述而设计的,所以我们必须将CONTROLdiagram的一个输入设置为machineclock.用Properties选项为END_RESETandGATE输出端口定义为Registered.4.3

创建状态图CONTROL在状态机编辑框中右击,选择

Properties;在对应的窗口General中为Clock选择F_PATTERN信号用FSM|State选项,或Statebutton()在编辑框中画三个状态,如图:4.4

创建状态图CONTROL请更改状态名分别为IDLE,OPEN_GATEandEND_CYCLE,如右图:状态圆圈可以随意拉大右击状态,选择Properties

可以更改状态名(General—State

Propertieswindow)。或则双击原状态名直接更改。4.5

创建状态图CONTROL请画出右图所示的状态转换连接线:状态转换连接线可以点中拖动,随意改变形状。画状态连接线请从菜单中选择FSM|Transition,或选择Transitionbutton(),从开始状态画线连接目标状态。4.6

创建状态图CONTROL请画出reset符号,如右图:设置reset信号的参数:右击FSM编辑框,选择Properties调出MachineProperties窗口定义FSM的复位状态:从菜单中选择FSM|RESET,或者点击Resetbutton(),然后即可画出reset符号。Right-clickhere4.7

创建状态图CONTROL在MachineProperties

窗口中点击Resettab,然后选择:

-Name:RESET

-Type:Asynchronous

-ActiveLevel:High

点击Advanced可以设置更加复杂的RESET条件ClickOK4.8

创建状态图CONTROL请加如下的条件:

START=‘0’

:IDLE状态的自身循环转换线、END_CYCLE状态到IDLE状态的转换线;

START=‘1’

:END_CYCLE状态自身循环转换线、

IDLE状态到OPEN_GATE状态的转换线状态转换条件的添加可以通过菜单选择FSM|Condition

或者选择Conditionbutton(),然后点击转换线,输入表达式4.9

创建状态图CONTROL请添加如下的状态动作:

GATE<=‘0’;

END_RESET<=‘1’;

totheIDLEstate

GATE<=‘1’;

END_RESET<=‘0’;

totheOPEN_GATEstate

GATE<=‘0’;

END_RESET<=‘0’;

totheEND_CYCLEstateFSM的状态动作可从菜单中选择FSM|Action|Entry,接着点中相应状态,输入动作表达式。(或)4.10

创建状态图CONTROLSave状态图(Ctrl+S),关闭,然后拖入Functional。编译CONTROL.ASF(F11)。编译顶层框图(Top_frqm.bde)。选择Top_frqm(Top_frqm)

的E/A设置为顶层(SetasTop-Level)。Yourdesignisreadyforfinaltesting.小结HDLEditor (HDE)

语言助手,获取HDL代码模板BlockDiagramEditor (BDE)自动生成HDL源代码StateDiagramEditor (FSM)自动生成HDL源代码FunctionalSimulationA>手动加测试激励进行仿真B>编写宏文件(*.do)进行仿真C>编写测试平台进行仿真A>手动加测试激励进行仿真

SettheAND2entity-architecturepairastop-levelunitforsimulation:—clickthe"+"signnexttoitandrightclickontheE/Apairtobringupthemenu—selectSetasTopLeveloptionNewWaveformRightClickSimulatorsRunB>编写宏文件(*.do)进行仿真Theforcecommandusedfromtheconsoleorinmacrofilesletsyoucreateanywaveformusingthefollowingsyntax:

wheremoreth

温馨提示

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

评论

0/150

提交评论