《第VHDL与原理图层次型溷合设计.pptx》由会员分享,可在线阅读,更多相关《第VHDL与原理图层次型溷合设计.pptx(53页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 6.1 自底向上混合设计6.1.1 6.1.1 自底向上混合设计流程第1页/共53页6.1 自底向上混合设计6.1.2 1位二进制全加器设计一位二进制半加器真值表如表6.1所示。其中a、b是输入端,So是和、co进位端。表6.1 一位二进制半加器真值表第2页/共53页6.1 自底向上混合设计1.建立工程 建立一个工程名为f_adder的工程文件,如图6.2所示:图6.2 f_adder的工程项目图 第3页/共53页6.1 自底向上混合设计2.建立文件 建立三个VHDL文本文件,分别命名为h_adder.vhd(半加器文件名)、or_2.vhd(或门文件名)和f_adder.vhd(全加器文件
2、名),并保存,如图6.3所示。图 6.3第4页/共53页6.1 自底向上混合设计3.输入代码并打包入库 在每个VHDL文件中输入相应的代码,并保存文件,将底层的半加器和或门电路打包入库,如图6.4所示 图6.4 输入代码后的图形 第5页/共53页6.1 自底向上混合设计(1)半加器的VHDL代码如下:【例6.1】library ieee;use ieee.std_logic_1164.all;entity h_adder isport(a,b:in std_logic;co,so:out std_logic);end entity h_adder;architecture str of h_a
3、dder issignal abc:std_logic_vector(1 downto 0);beginabcso=0;coso=1;coso=1;coso=0;conull;end case;end process;end architecture str;图6.5半加器的打包元件 图6.6 半加器的仿真波形第7页/共53页6.1 自底向上混合设计or_2.vhd中输入代码如下:【例6.2】library ieee;use ieee.std_logic_1164.all;entity or_2 isport(a,b:in std_logic;c:out std_logic);end enti
4、ty or_2;architecture str of or_2 isarchitecture str of or_2 isbegincain,b=bin,co=d,so=e);u2:h_adder port map(a=e,b=cin,co=f,so=sum);u3:or_2 port map(a=d,b=f,c=cout);end architecture str;第13页/共53页6.1 自底向上混合设计5.顶层文件编译与仿真(1)编译顶层VHDL的方法 此时,由于工程文件名是f_adder,所以可以直接点击编译按钮,此时将对顶层VHDL文件进行编译。图6.11 全加器的顶层VHDL语言
5、仿真波形第14页/共53页6.1 自底向上混合设计(2)编译顶层原理图 编译顶层原理图文件,需要重新建立一个新的工程文件,且命名为fg_adder,原因是顶层原理图文件名为fg_adder.bdf。其时序仿真结果如图6.14所示。图6.14 全加器顶层原理图仿真波形第15页/共53页6.1 自底向上混合设计6.引脚分配、下载验证 分配引脚的结果如图6.15所示,并在实验板上验证其功能,具体步骤做实验再详述。图6.15 全加器引脚分配图 第16页/共53页6.1 自底向上混合设计6.1.3 简易时钟计数电路设计 1.时钟计数电路结构图 时钟电路的组成由两个模为60的计数器和一个模为12的计数器构
6、成,具体结构如图6.16所示 第17页/共53页6.1 自底向上混合设计2.模块电路的VHDL描述 本列采用混合设计输入方法,先建立两个VHDL文本文件,分别将模为60的8421BCD计数器和模为12的计数器代码输入,然后再建立顶层原理图文件。(1)模为60的BCD计数器的VHDL设计代码如下:第18页/共53页6.1 自底向上混合设计【例6.4】模为60的BCD计数器的VHDL设计library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity counter_60 isport(en:in std
7、_logic;clear:in std_logic;clk:in std_logic;count:out std_logic;qh:buffer std_logic_vector(3 downto 0);ql:buffer std_logic_vector(3 downto 0);end;architecture str of counter_60 isBegin -接下页第19页/共53页6.1 自底向上混合设计-接上页count=1when(qh=0101 and ql=1001 and en=1)else 0;process(clk,clear)beginif(clear=0)thenq
8、h=0000;ql=0000;elsif(clkevent and clk=1)then if(en=1)then if(ql=9)then ql=0000;if(qh=5)then qh=0000;ql=“0000”;-接下页第20页/共53页6.1 自底向上混合设计else qh=qh+1;-接上页 end if;else ql=ql+1;end if;end if;end if;end process;end;第21页/共53页6.1 自底向上混合设计(2)模为12的计数器的VHDL代码如下:【例6.5】library ieee;use ieee.std_logic_1164.all;u
9、se ieee.std_logic_unsigned.all;entity counter_12 isport(en:in std_logic;clear:in std_logic;clk:in std_logic;count:out std_logic;qh:buffer std_logic_vector(3 downto 0);ql:buffer std_logic_vector(3 downto 0);end;-接下页第22页/共53页6.1 自底向上混合设计architecture str of counter_12 is -接上页begincount=1 when(qh=0001 a
10、nd ql=0010 and en=1)else 0;process(clk,clear)begin if(clear=0)then qh=0000;ql=0000;elsif(clkevent and clk=1)then if(en=1)then if(ql=9)then ql=0000;qh=“0001”;-接下页第23页/共53页6.1 自底向上混合设计else ql=ql+1;-接上页 end if;if(qh=1)then if(ql=2)then qh=0000;ql=0001;else ql=ql+1;end if;end if;end if;end if;end proces
11、s;end;第24页/共53页6.1 自底向上混合设计3.顶层原理图设计 如图6.17所示,时钟计数电路的顶层原理图设计,最后保存文件。第25页/共53页6.1 自底向上混合设计4.编译和仿真 编译工程文件,建立仿真波形文件后完成仿真,仿真波形如图6.18所示。图6.18 时钟计数电路的顶层文件仿真波形第26页/共53页6.2自顶向下混合设计6.2.1自顶向下设计流程 所谓自顶向下的设计方法如图6.19所示,它是指设计电子系统先从系统最抽象的层次出发,作高层次仿真,经过仿真验证后再经整体规划(Floor Planning)将系统行为操作分为多个子系统。第27页/共53页6.2自顶向下混合设计6
12、.2.1自顶向下设计流程自顶向下的设计方法的优点:(1)克服了大规模电子系统高复杂度所带来的问题,系统可以层次式地划分为易于处理的子模块系统,子模块系统还可以划分成下一层子模块系统,任务可以层层分解,直到最容易实现为此。第28页/共53页6.2自顶向下混合设计6.2.1自顶向下设计流程(2)各子模块系统可以给设计组中的成员同时设计,也加快了设计速度。(3)设计错误可以在早期发现,极大地减少了设计的迭代次数。(4)逻辑综合优化之前的设计工作和具体采用什么工艺生产芯片是无关的,因而设计的可移植性好,当要采用新的工艺时,可以直接从综合开始。(5)自顶向下的设计方法增加了一次性设计成功的可能性。第29
13、页/共53页6.2自顶向下混合设计6.2.1自顶向下设计流程自顶向下设计流程第30页/共53页6.2自顶向下混合设计6.2.2 16进制计数译码显示电路设计 1.建立工程 建立名为counter_16的工程文件,如图 6.20所示。图6.20 counter_16的工程文件图第31页/共53页6.2自顶向下混合设计6.2.2 16进制计数译码显示电路设计2.建立原理图文件 建立一个空白的原理图文件,并命名为counter_16,如图6.21所示。图6.21 counter_16的原理图文件图 第32页/共53页6.2自顶向下混合设计6.2.2 16进制计数译码显示电路设计3.创建图标模块 单击
14、(Block Tool)按钮,在适当的位置放置一个符号块,如图6.22所示。图6.22 放置图标模块第33页/共53页6.2自顶向下混合设计6.2.2 16进制计数译码显示电路设计4.设置图标模块(1)在图所示的符号块上单击鼠标右键:从弹出的菜单中选择“Block Properties”命令,弹出如图6.23所示的对话框。在“General”页面中的“Name”栏中输入设计文件名称,在“Instance name”栏中输入模块名称。本例中设计名称为“counter16”,模块名称为“instl”。第34页/共53页6.2自顶向下混合设计 图6.23 设置图标模块6.2.2 16进制计数译码显示
15、电路设计进制计数译码显示电路设计第35页/共53页6.2自顶向下混合设计6.2.2 16进制计数译码显示电路设计(2)单击“I/O”页标签:页面如图6.24所示。在“Name”栏中分别输入图标模块的输入端口名和输出端口名;在“type栏中分别选择与输入和输出对应的类型,点击ADD按钮。当设置完成所有端口后,单击“确定”按钮,结果如图6.25所示。第36页/共53页6.2自顶向下混合设计图6.24 图标模块“I/O”页标签图6.25 图标模块“I/O”设置完成6.2.2 16进制计数译码显示电路设计进制计数译码显示电路设计第37页/共53页6.2自顶向下混合设计6.2.2 16进制计数译码显示电
16、路设计5.添加模块引线并设置属性 (1)在图中的counter16模块的左右两侧分别用3条连线和1条总线连接,如图6.26所示。可以看到,在每条线靠模块的一侧都有的图样。双击其中一个样标,弹出“Mapper Properties”对话框,如图6.27所示。在“General”页面的“Type”栏中选择输入、输出类型,本例中选择为“INPUT”。第38页/共53页6.2 自顶向下混合设计图6.26 图标模块连线图6.27 图标模块端口模式设置6.2.2 16进制计数译码显示电路设计进制计数译码显示电路设计第39页/共53页6.2自顶向下混合设计6.2.2 16进制计数译码显示电路设计(2)单击“
17、Mappings”页标签,页面如图 6.28所示。在“I/O on block”栏里选择引脚clk,在“Signals in node”栏中输入连线节点名称clk。输入完成后,单击“Add”按钮添加到“Existing mappings”栏中。最后单击“确定”按钮。结果如图6.29所示。第40页/共53页6.2自顶向下混合设计图6.28 图标模块Mappings设置 图6.29 图标模块样标设置 6.2.2 16进制计数译码显示电路设计进制计数译码显示电路设计第41页/共53页6.2自顶向下混合设计(3)同理,将其他引线按此方法进行设置。通常模块左侧放置输入接口信号,右侧放置输出接口信号。本例
18、将左侧的其余两条输入信号分别设置为,rst和en;右侧的输出信号设置为q3.0,设置完成后如图6.30所示。第42页/共53页6.2自顶向下混合设计6.2.2 16进制计数译码显示电路设计6.创建设计文件 在图6.30所示的符号块上单击鼠标右键,在弹出的菜单中选择“Create Design File form Selected Block”命令,弹出如图6.31所示对话框。其中“File type”栏中有4个选项可供选择,它们是“AHDL”、“VHDL”、“Verilog HDL”和“Schematic”,分别对应不同的电路行为描述方法。本例中选择“VHDL”,单击“OK按钮。此时,会弹出生
19、成模块文件的确认对话框,单击“确定”,进入VHDL文本编辑窗口,如图6.32所示。第43页/共53页6.2自顶向下混合设计6.2.2 16进制计数译码显示电路设计图6.31 Create Design File form Selected Block选择图6.32 新建VHDL文本编辑窗口第44页/共53页6.2自顶向下混合设计6.2.2 16进制计数译码显示电路设计7.输入VHDL代码 将图6.32中的代码修改为所需要设计的代码,如图6.33所示。图6.33 counter16的VHDL代码第45页/共53页6.2自顶向下混合设计6.2.2 16进制计数译码显示电路设计【例6.6】Count
20、er16.vhd文件的VHDL描述 LIBRARY ieee;USE ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY counter16 IS PORT(clk:IN STD_LOGIC;en:IN STD_LOGIC;rst:IN STD_LOGIC;q:OUT STD_LOGIC_VECTOR(3 downto 0);END counter16;-接下页第46页/共53页6.2自顶向下混合设计6.2.2 16进制计数译码显示电路设计ARCHITECTURE counter16_architecture OF co
21、unter16 IS -接上页signal q1:std_logic_vector(3 downto 0);BEGINprocess(clk,en,rst)beginif en=1 thenif rst=1 then q1=0000;elsif clkevent and clk=1 then q1=q1+1;end if;end if;end process;qyyyyyyyyyyyyyyyyy=11111111;end case;end process;END bcd_decode_ ARCHITECTURE;6.2.2 16进制计数译码显示电路设计进制计数译码显示电路设计第50页/共53页6.2自顶向下混合设计6.2.2 16进制计数译码显示电路设计9.编译工程 单击水平工具条上的编译按钮 ,将所设计的工程项目counter_16进行编译。10.仿真 创建波形矢量文件后分别进行功能仿真和时序仿真。其时序仿真结果如图6.35所示。图6.3516进制计数器电路序仿真波形图第51页/共53页6.2自顶向下混合设计6.2.2 16进制计数译码显示电路设计11.引脚分配、下载验证 对于本设计分配引脚,并在实验系统上验证其功能。具体步骤可根据实验室的EDA实验系统具体操作。第52页/共53页感谢您的观看!第53页/共53页
限制150内