【精品】EDA技术 第6章 VHDL设计应用实例精品ppt课件.ppt
《【精品】EDA技术 第6章 VHDL设计应用实例精品ppt课件.ppt》由会员分享,可在线阅读,更多相关《【精品】EDA技术 第6章 VHDL设计应用实例精品ppt课件.ppt(198页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、EDA技术 第6章 VHDL设计应用实例第6章 VHDL设计应用实例6.1 8位加法器的设计位加法器的设计 1设计思路设计思路 加法器是数字系统中的基本逻辑器件,减法器和硬件乘法器都可由加法器来构成。多位加法器的构成有两种方式:并行进位和串行进位方式。并行进位加法器设有进位产生逻辑,运算速度较快;串行进位方式是将全加器级联构成多位加法器。并行进位加法器通常比串行级联加法器占用更多的资源。随着位数的增加,相同位数的并行加法器与串行加法器的资源占用差距也越来越大。因此,在工程中使用加法器时,要在速度和容量之间寻找平衡点。第6章 VHDL设计应用实例 实践证明,4位二进制并行加法器和串行级联加法器占
2、用几乎相同的资源。这样,多位加法器由4位二进制并行加法器级联构成是较好的折中选择。本设计中的8位二进制并行加法器即是由两个4位二进制并行加法器级联而成的,其电路原理图如图6.1所示。第6章 VHDL设计应用实例图6.1 8位加法器电路原理图第6章 VHDL设计应用实例2VHDL源程序源程序1)4位二进制并行加法器的源程序ADDER4B.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ADDER4B IS -4位二进制并行加法器 PORT(CIN:IN STD_LOGIC;-低位
3、进位 A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);-4位加数 B:IN STD_LOGIC_VECTOR(3 DOWNTO 0);-4位被加数 S:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);-4位和 CONT:OUT STD_LOGIC);-进位输出第6章 VHDL设计应用实例第6章 VHDL设计应用实例第6章 VHDL设计应用实例 COMPONENET ADDER4B -对要调用的元件ADDER4B的界面端口进行定义 PORT(CIN:IN STD_LOGIC;A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);B:IN STD
4、_LOGIC_VECTOR(3 DOWNTO 0);S:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);CONT:OUT STD_LOGIC);END COMPONENT;SIGNAL CARRY_OUT:STD_LOGIC;-4位加法器的进位标志BEGIN U1:ADDER4B -例化(安装)一个4位二进制加法器U1第6章 VHDL设计应用实例 PORT MAP(CIN=CIN,A=A(3 DOWNTO 0),B=B(3 DOWNTO0),S=S(3 DOWNTO 0),COUT=CARRY_OUT);U2:ADDER4B -例化(安装)一个4位二进制加法器U2 PORT
5、MAP(CIN=CARRY_OUT,A=A(7 DOWNTO 4),B=B(7 DOWNTO 4),S=S(7 DOWNTO 4);CONT=CONT);END ART;第6章 VHDL设计应用实例 3硬件逻辑验证硬件逻辑验证 选择实验电路结构图NO.1,由5.2的实验电路结构图NO.1和图6.1确定引脚的锁定。如可取实验电路结构图的PIO3PIO0接A3.0,PIO7PIO4接A7.4,PIO11PIO8接B3.0,PIO15PIO12接B7.4,PIO49接CIN。此加法器的被加数A和加数B分别由键2与键1、键4与键3输入,加法器的最低位进位CIN由键8输入,计算结果将分别通过PIO23P
6、IO20,PIO19PIO16输出并显示于数码管6(高4位)和数码管5(低4位),溢出进位由PIO39输出,当有进位时,结果显示于发光管D8。第6章 VHDL设计应用实例6.2 8位乘法器的设计位乘法器的设计 1设计思路设计思路 纯组合逻辑构成的乘法器虽然工作速度比较快,但占用硬件资源多,难以实现宽位乘法器,而基于PLD器件外接ROM九九表的乘法器则无法构成单片系统,也不实用。这里介绍由8位加法器构成的以时序逻辑方式设计的8位乘法器,此乘法器具有一定的实用价值。其乘法原理是:乘法通过逐项位移相加原理来实现,从被乘数的最低位开始,若为1,则乘数左移后与上一次和相加;若为0,左移后以全零相加,直至
7、被乘数的最高位。从图6.2的逻辑图上可以清楚地看出此乘法器的工作原理。第6章 VHDL设计应用实例图6.2 88位乘法器电路原理图第6章 VHDL设计应用实例 图6.2中,ARICTL是乘法运算控制电路,它的START(可锁定于引脚I/O 49)信号的上跳沿与高电平有两个功能,即16位寄存器清零和被乘数A7.0向移位寄存器SREG8B加载;它的低电平则作为乘法使能信号。乘法时钟信号从ARICTL的CLK输入。当被乘数加载于8位右移寄存器SREG8B后,随着每一时钟节拍,最低位在前,由低位至高位逐位移出。当为1时,与门ANDARITH打开,8位乘数B7.0在同一节拍进入8位加法器,与上一次锁存在
8、16位锁存器REG16B中的高8位进行相加,其和在下一时钟节拍的上升沿被锁进此锁存器。而当被乘数移出位为0时,与门全零输出。如此往复,直至8个时钟脉冲后,由ARICTL的控制,乘法运算过程自动中止。ARIEND输出高电平,以此可点亮一发光管,以示乘法结束。此时REG16B的输出值即为最后乘积。第6章 VHDL设计应用实例 此乘法器的优点是节省芯片资源,它的核心元件只是一个8位加法器,其运算速度取决于输入的时钟频率。若时钟频率为100 MHz,则每一运算周期仅需80 ns。而若利用备用最高时钟,即12 MHz晶振的MCS-51单片机的乘法指令,进行8位乘法运算,仅单指令的运算周期就长达4 s。因
9、此,可以利用此乘法器或相同原理构成的更高位乘法器完成一些数字信号处理方面的运算。第6章 VHDL设计应用实例2.VHDL源程序源程序1)选通与门模块的源程序ANDARITH.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ANDARITH IS -选通与门模块 PORT(ABIN:IN STD_LOGIC;-与门开关 DIN:IN STD_LOGIC_VECTOR(7 DOWNTO 0)-8位输入 DOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);-8位输出END ANDARITH;ARCHITECTURE ART
10、 OF ANDARITH IS 第6章 VHDL设计应用实例 BEGIN PROCESS(ABIN,DIN)BEGIN FOR I IN 0 TO 7 LOOP -循环,分别完成8位数据与一位 DOUT(I)=DIN(I)AND ABIN;-控制位的与操作 END LOOP;END PROCESS;END ART;第6章 VHDL设计应用实例2)16位锁存器的源程序REG16B.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY REG16B IS -16位锁存器 PORT(CLK:IN STD_LOGIC;-锁存信号 CLR:IN STD_L
11、OGIC;-清零信号 D:IN STD_LOGIC_VECTOR(8 DOWNTO 0)-8位数据输入 Q:OUT STD_LOGIC_VECTOR(15 DOWNTO 0);-16位数据输出END REG16B;ARCHITECTURE ART OF REG16B IS SIGNAL R16S:STD_LOGIC_VECTOR(15 DOWNTO 0);-16位寄存器设置第6章 VHDL设计应用实例BEGINPROCESS(CLK,CLR)BEGIN IF CLR=1 THEN R16S=0000000000000000;-异步复位信号 ELSIF CLKEVENT AND CLK=1 TH
12、EN-时钟到来时,锁存输入值 R16S(6 DOWNTO 0)=R16S(7 DOWNTO 1);-右移低8位 R16S(15 DOWNTO 7)=D;-将输入锁到高能位 END IF;END PROCESS;Q=R16S;END ART;第6章 VHDL设计应用实例3)8位右移寄存器的源程序SREG8B.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;-8位右移寄存器ENTITY SREG8B IS PORT(CLK:IN STD_LOGIC;LOAD :IN STD _LOGIC;BIN:IN STD_LOGIC_VECTOR(7DOWNTO 0);
13、QB:OUT STD_LOGIC );END SREG8B;ARCHITECTURE ART OF SREG8B IS SIGNAL REG8B:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN PROCESS(CLK,LOAD)第6章 VHDL设计应用实例 BEGIN IF CLKEVENT AND CLK=1 THEN IF LOAD=1 THEN REG8=DIN;-装载新数据 ELSE REG8(6 DOWNTO0)=REG8(7 DOWNTO 1);-数据右移 END IF;END IF;END PROCESS;QB=REG8(0);-输出最低位END ART;第
14、6章 VHDL设计应用实例4)乘法运算控制器的源程序ARICTL.VHD LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ARICTL IS -乘法运算控制器 PORT(CLK:IN STD_LOGIC;START:IN STD_LOGIC;CLKOUT:OUT STD_LOGIC;RSTALL:OUT STD_LOGIC;ARIEND:OUT STD_LOGIC );END ARICTL;ARCHITECTURE ART OF ARICTL IS SIGNAL CNT4B:STD_
15、LOGIC_VECTOR(3 DOWNTO 0);BEGIN第6章 VHDL设计应用实例 RSTALL=START;PROCESS(CLK,START)BEGIN IF START=1 THEN CNT4B=0000;-高电平清零计数器 ELSIF CLKEVENT AND CLK=1 THEN IF CNT4B8 THEN-小于则计数,等于8表明乘法运算已经结束 CNT4B=CNT4B+1;END IF;END IF;END PROCESS;PROCESS(CLK,CNT4B,START)BEGIN第6章 VHDL设计应用实例 IF START=0 THEN IF CNT4B8 THEN -
16、乘法运算正在进行 CLKOUT=CLK;ARIEND=0;ELSE CLKOUT=0;ARIEND=1;-运算已经结束 END IF;ELSE CLKOUT=CLK;ARIEND=0;END IF;END PROCESS;END ART;第6章 VHDL设计应用实例5)8位乘法器的源程序MULTI8X8.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;-8位乘法器顶层设计ENTITY MULTI8X8 IS PORT(CLK:IN STD_LOGIC;START:IN STD_LOGIC;-乘法启动信号,高电平复位与加载,低电平运算 A:IN STD_L
17、OGIC_VECTOR(7 DOWNTO 0);-8位被乘数 B:IN STD_LOGIC_VECTOR(7 DOWNTO 0);-8位乘数 ARIEND:OUT STD_LOGIC;-乘法运算结束标志位 DOUT:OUT STD_LOGIC_VECTOR(15 DOWNTO 0);-16位乘积输出END MULTI8X8;第6章 VHDL设计应用实例ARCHITECTURE ART OF MULTI8X8 IS COMPONENT ARICTL -待调用的乘法控制器端口定义 PORT(CLK:IN STD_LOGIC;START:IN STD_LOGIC;CLKOUT:OUT STD_LOG
18、IC;RSTALL:OUT STD_LOGIC;ARIEND:OUT STD_LOGIC);END COMPONENT;COMPONENT ANDARITH -待调用的控制与门端口定义 PORT(ABIN:IN STD_LOGIC;DIN:IN STD_LOGIC_VECTOR(7 DOWNTO 0);DOUT:OUT_STD_LOGIC_VECTOR(7 DOWNTO 0);END COMPONENT;COMPONENT ADDER8B -待调用的8位加法器端口定义 第6章 VHDL设计应用实例COMPONENT SREG8B -待调用的8位右移寄存器端口定义 COMPONENT REG16
19、B -待调用的16右移寄存器端口定义 SIGNAL GNDINT:STD_LOGIC;SIGNAL INTCLK:STD_LOGIC;SIGNAL RSTALL:STD_LOGIC;SIGNAL QB:STD_LOGIC;SIGNAL ANDSD:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL DTBIN:STD_LOGIC_VECTOR(8 DOWNTO 0);SIGNAL DTBOUT:STD_LOGIC_VECTOR(15 DOWNTO 0);BEGIN第6章 VHDL设计应用实例DOUT=DTBOUT;GNDINTCLK,START=START,CLKOUT=I
20、NTCLK,RSTALL=RSTALL,ARIEND=ARIEND);U2:SREG8B PORT MAP(CLK=INTCLK,LOAD=RSTALL.DIN=B,QB=QB);U3:ANDARITH PORT MAP(ABIN=QB,DIN=A,DOUT=ANDSD);U4:ADDER8B PORT MAP(CIN=GNDINT,A=DTBOUT(15 DOWNTO 8),B=ANDSD,S=DTBIN(7 DOWNTO 0),COUT=DTBIN(8);U5:REG16B PORT MAP(CLK=INTCLK,CLR=RSTALL,D=DTBIN,Q=DTBOUT);END ART;第
21、6章 VHDL设计应用实例 3.硬件逻辑验证硬件逻辑验证 选择实验电路结构图NO.1,由5.2节的实验电路结构图NO.1和图6.2确定引脚的锁定。如乘法运算时钟CLK接CLOCK0,清零及启动运算信号START由键8(PIO49)控制,乘数B7.0接PIO7PIO0(由键2,键1输入8位二进制数),被乘数A7.0接PIO15PIO8(由键4,键3输入8位二进制数),乘积输出DOUT15.0接PIO31PIO16,乘法运算结束信号ARIEND接PIO39(D8)。第6章 VHDL设计应用实例 进行硬件验证时方法如下:键2和键1分别输入乘数的高4位和低4位(输入值显示于数码2和数码1);键4和键3
22、分别输入被乘数的高4位和低4位(输入值显示于数码4和数码3);乘法操作时钟信号输入接CLOCK0;键8输入高电平时,乘积锁存器清零,乘数和被乘数数值加载,低电平时开始作乘法,8个脉冲后乘法结束,乘积显示于数码管85,高位在左。第6章 VHDL设计应用实例6.3 序列检测器的设计序列检测器的设计 1设计思路设计思路 序列检测器可用于检测一组或多组由二进制码组成的脉冲序列信号,这在数字通信领域有广泛的应用。当序列检测器连续收到一组串行二进制码后,如果这组码与检测器中预先设置的码相同,则输出1,否则输出0。由于这种检测的关键在于正确码的收到必须是连续的,这就要求检测器必须记住前一次的正确码及正确序列
23、,直到在连续的检测中所收到的每一位码都与预置数的对应码相同。在检测过程中,任何一位不相等都将回到初始状态重新开始检测。如图6.3所示,当一串待检测的串行数据进入检测器后,若此数在每一位的连续检测中都与预置的密码数相同,则输出“A”,否则仍然输出“B”。第6章 VHDL设计应用实例图6.3 8位序列检测器逻辑图第6章 VHDL设计应用实例2VHDL源程序源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY CHK IS PORT(DIN:IN STD_LOGIC;-串行输入数据位 CLK,CLR:IN STD_LOGIC;-工作时钟/复位信号 D:
24、IN STD_LOGIC_VECTOR(7 DOWNTO 0);-8位待检测预置数 AB:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);-检测结果输出END CHK;ARCHITECTURE ART OF CHK IS 第6章 VHDL设计应用实例SIGNAL Q:INTEGER RANGE 0 TO 8;BEGINPROCESS(CLK,CLR)BEGIN IF CLR=1 THEN Q IF DIN=D(7)THEN Q=1;ELSE Q IF DIN=D(6)THEN Q=2;ELSE Q IF DIN=D(5)THEN Q=3;ELSE Q IF DIN=D(4)T
25、HEN Q=4;ELSE Q IF DIN=D(3)THEN Q=5;ELSE Q IF DIN=D(2)THEN Q=6;ELSE Q IF DIN=D(1)THEN Q=7;ELSE Q IF DIN=D(0)THEN Q=8;ELSE Q Q=0;END IF;第6章 VHDL设计应用实例END PROCESS;PROCESS(Q)-检测结果判断输出BEGIN IF Q=8 THEN AB=1010;-序列数检测正确,输出“A”ELSE AB=1011;-序列数检测错误,输出“B”END IF;END PROCESS;END ART;第6章 VHDL设计应用实例 3硬件逻辑验证硬件逻辑验
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 【精品】EDA技术 第6章 VHDL设计应用实例精品ppt课件 EDA 技术 VHDL 设计 应用 实例 ppt 课件
限制150内