您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 现代电子系统设计 第3章 系统层次化设计
第3章系统层次化设计第3章系统层次化设计3.1层次化设计概念3.2在QuartusII中实现层次化设计3.3系统层次化设计进阶第3章系统层次化设计3.1层次化设计概念•层次化设计的优点:–一些常用模块可以被单独创建并存储,在以后的设计中可以直接调用而无需重新设计。–使整个设计更结构化,程序具有更高的可读性:顶层文件只将一些模块整合在一起,这使整个系统的设计思想更容易被理解。第3章系统层次化设计•层次化设计的核心思想:模块化、元件重用–模块化:将一个大系统划分为几个子模块,这些子模块又由更小的子模块组成,如此往下,直至不可再分,这时自顶向下的设计方法。–元件重用:同一个元件可以被不同的设计实体调用(实体F),也可以被同一个设计实体多次调用(实体G)。实体A实体B实体C实体D实体E实体F实体G(1)实体G(2)顶层文件第3章系统层次化设计3.2在QuartusII中实现层次化设计•在QuartusII中实现系统层次化设计的主要步骤:–按自顶向下的设计方法,设计系统,划分和定义系统子模块,形成系统层次化设计图。–用VHDL语言设计底层子模块,并生成相应的元件符号。–调用下层元件,完成上层模块的设计,并生成相应的元件符号。这样从底层元件开始,自底向上完成系统的设计。实体A实体B实体C实体D实体E实体F实体G(1)实体G(2)顶层文件第3章系统层次化设计•例:假设系统有一个200MHz(即时钟周期为5ns)的时钟,要求将其分为100M、50M和25MHz,并从这四个频率的时钟中选择一个作为输出,如何设计电路?•设计思路:这四个频率分别由200MHz的主频进行2分频、4分频和8分频而得,因此有两种方案。Muxclk1(200M)clk2(100M)clk3(50M)clk4(25M)clkout2sel第3章系统层次化设计•方案1:设计一个2分频电路、一个4分频电路、一个8分频电路,直接从200MHz分频得到。clkout2sel2分频电路4分频电路8分频电路Mux方案1clkin200M第3章系统层次化设计•方案2:只设计一个2分频电路,用三个2分频电路级联的方式,从200MHz逐级分出所需的时钟信号。方案2clkout2sel2分频电路2分频电路Mux2分频电路clkin200M•从编程工作量、对已有资源的再利用和节省系统资源这三方面来看,选择方案2。•系统由2分频电路和四选一选择器Mux组成。第3章系统层次化设计•设计2分频电路模块ENTITYfenpin2ISPORT(clkin:INSTD_LOGIC;clkout:OUTSTD_LOGIC);ENDfenpin2;ARCHITECTUREaOFfenpin2ISsignalclk:STD_LOGIC;BEGINPROCESS(clkin)BEGINif(rising_edge(clkin))thenclk=notclk;endif;ENDPROCESS;clkout=clk;ENDa;clkinclk(初值为0):当clkin为上升沿时,clk为前一个clk值取反第3章系统层次化设计•生成元件符号:–保存设计文件:注意文件名必须与实体同名,即应保存为:fenpin2.vhd,否则会出现编译错误。另外保存地址为工程所在文件夹,否则在工程中找不到该器件。–生成元件符号:菜单File-Create/Update-CreateSymbolFileforCurrentFile注意:一定要先保存设计文件,才能生成元件符号。生成元件符号时首先进行设计文件的编译,编译成功才能生成符号,否则必须修改设计文件后,再进行元件符号的生成。第3章系统层次化设计•调用下层元件,完成上层模块的设计–打开图形编辑器:File-New,在DeviceDesignFiles中第二项选择:BlockDiagram/SchematicFile.–调用已生成的元件:在图形编辑器的空白处双击鼠标,出现Symbol对话框,在左栏的Libraries中展开Project目录可以看到所有已生成的元件。选择fenpin2,点击OK,在图形编辑器上单击鼠标,就调用了元件:fenpin2第3章系统层次化设计–调用QuartusII的LPM宏模块:–QuartusII为设计人员提供了多种功能的LPM(参数可设置模块库)宏模块,它包含大部分常用数字电路元件,如全加器、RAM等。–四选一选择器Mux是常用电路元件,在LPM中包含该元件,因此不用重新设计,只需调用并进行参数配置即可。–选择元件:Symbol对话框-左栏的Libraries-…quartus42/libraries/megafunctions/gates/lpm_mux–参数设定:双击lpm_mux,出现LPM宏模块设置向导,进行lpm_mux的参数设定。第3章系统层次化设计–1、选择设计文件格式为VHDL–2、参数设定:4路数据输入,输入/输出数据宽度为1bit,不带时钟。4路数据输入数据宽度为1bit不带时钟第3章系统层次化设计–定义输入/输出端口并按设计图进行连线。–添加输入/输出引脚:在Symbol对话框的Name栏中输入“input”,点击OK即可。若要重复输入多个输入引脚,选择“Repeat-insertMode”。输入“input”重复输入第3章系统层次化设计–设置引脚属性:双击选中引脚,出现如下引脚属性对话框。Pin_name中重命名引脚,特别注意如果是引脚向量,也是在Pin_name中定义,如sel[1..0],表示两位输入数据。第3章系统层次化设计–连线:如果需要连接两个元件端口,只需将鼠标移到其中一个端口上,这时鼠标指示符变为“+”;然后拖动鼠标到第二个端口,这时鼠标变为“”,松开鼠标即画好,此时线成深蓝色,并在端口和拐角处出现“■”,这表示线连好,如果出现“×”,则表示线断开,需删除重连。–删除连线:点中该线,点中的线变为深蓝色,点击鼠标右键,选择Cut或Delete。第3章系统层次化设计–最终得到如下的电路图,保存并编译。•该图与方案2的设计图非常相似,这是图形法输入的优点:直观、形象、容易理解。因此在进行层次化设计时,经常用VHDL设计底层模块,然后在上层文件中以图形方式连接。第3章系统层次化设计•层次化设计时注意的几项:–如何只对当前设计文件进行编译:层次化设计中,系统中由多个子模块构成,每完成一个模块的设计后,必须对其进行编译,看其是否设计正确。有两种方法对当前设计文件进行编译(两种方法都必须先保存设计文件):方法1:生成或更新设计文件的相应元件,在生成/更新过程中将对设计文件进行编译。方法2:菜单Processing-AnalyzeCurrentFile第3章系统层次化设计•层次化设计时注意的几项:–当模块的设计文件修改后,一定要更新元件符号:File-Create/Update-CreateSymbolFileforCurrentFile–当元件符号更新后,必须在图形编辑器中也进行相应的更新:在图形编辑器中选中要更新的元件符号,点击鼠标右键,选择UpdateSymbolorBlock。第3章系统层次化设计•多层次设计的实现:每个设计实体(包括用VHDL设计的和图形编辑器画成的)都可以生成元件符号,以供上一层使用。•图形编辑器画成的设计实体生成元件符号的方法与VHDL设计文件生成元件符号的方法一样。File-Create/Upda-CreateSymbolFileforCurrentFile•实验四:时钟选择器实验第3章系统层次化设计3.3系统层次化设计进阶•本节主要侧重于用VHDL语言实现系统层次化设计,主要介绍:元件例化、程序包和类属映射这几个层次化设计中最重要的语句。第3章系统层次化设计•例子:设计如下的电路:clkoutsel2分频电路Muxclk200M•问题:我在其它工程已经设计了2分频电路,这里我怎么调用它?第3章系统层次化设计•在工程中加入已设计的2分频电路设计文件:fenpin2.vhd。菜单Project-add/removefilesinproject点击,在文件夹中找到fenpin2.vhd第3章系统层次化设计•2、元件例化:将以前设计的实体当作本设计的一个元件(元件定义),然后再调用这个元件,即用VHDL语言将各元件之间的连接关系描述出来(元件映射)。元件定义:与实体的格式完全一样COMPONENT元件名IS[GENERIC(类属表);]--可选项PORT(端口名表);ENDCOMPONENT[元件名];元件映射:必须先有元件定义,才能进行元件映射例化名1:元件名PORTMAP(元件端口名=连接端口名,…);第3章系统层次化设计•例:2分频电路的元件定义:注意:元件名与该元件实体名fenpin2相同,端口与实体端口相同。最简单的方法:打开元件的设计文件fenpin2.vhd,将元件实体声明复制,将Entity改为Component即可。•ENTITYfenpin2ISPORT(clkin:INSTD_LOGIC;clkout:OUTSTD_LOGIC);ENDfenpin2;COMPONENTfenpin2ISPORT(clkin:INSTD_LOGIC;clkout:OUTSTD_LOGIC);ENDCOMPONENT;第3章系统层次化设计•元件映射:u1:fenpin2portmap(clkin=clk,clkout=clk1);调用了一个fenpin2元件,取名为u1。u1的输入时钟为clk,输出时钟为clk1。注意:元件端口名=连接端口名左边为元件定义中的端口名,右边为实际元件u1的端口名。•元件定义在结构体的声明部分,元件映射在结构体的描述语句部分。第3章系统层次化设计ENTITYhfenpinISPORT(clk,sel:INSTD_LOGIC;clkout:OUTSTD_LOGIC);ENDhfenpin;ARCHITECTUREaOFhfenpinISCOMPONENTfenpin2ISPORT(clkin:INSTD_LOGIC;clkout:OUTSTD_LOGIC);ENDCOMPONENT;SIGNALclk1:STD_LOGIC;BEGINu1:fenpin2portmap(clkin=clk,clkout=clk1);WITHselSELECTclkout=clkWHEN'0',clk1WHEN'1';ENDa;元件定义在结构体的声明部分元件映射在结构体的描述语句部分第3章系统层次化设计•元件例化语句的缺点:–如果在一个实体中用到多个元件,如实体D,那么在其结构体中要用大量篇幅定义元件。–元件定义在结构体中,只有这个实体能调用该元件。如果有多个实体用到同一个元件,那么在这多个实体中都要对该元件进行定义,如在实体B、C、D中都要定义元件F。实体A实体C实体D实体B实体G实体E实体F实体H第3章系统层次化设计•解决该问题的方法:使用程序包。–将数据类型、元件定义、子程序等收集到一个VHDL程序包中,只要在设计实体中用USE语句调用该程序包,就可以使用这些预定义的数据类型、元件定义、子程序。第3章系统层次化设计•定义程序包的语法格式:PACKAGE程序包名IS程序包首说明部分;END程序包名;[ACKAGEBODY程序包名IS程序包体说明部分;END程序包名;]–程序包首为数据类型定义、元件定义、子程序说明等。–程序包体为在程序包首定义的子程序的子程序体,没有子程序的程序包可以省略程序包体。第3章系统层次化设计•例:在程序包中进行元件定义LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;PACKAGEpac_fenpinISCOMPONENTfenpin2ISPORT(clkin:INSTD_LOGIC;clkout:OUTSTD_LOGIC);ENDCOMPONENTfenpin2;ENDpac_fenpin;元件定义•注意:程序包设计文件应保存为同名的VHDL文件,即pac_fenpin.vhd,并编译。只
本文标题:现代电子系统设计 第3章 系统层次化设计
链接地址:https://www.777doc.com/doc-3782275 .html