VHDL程序设计实践.ppt
《VHDL程序设计实践.ppt》由会员分享,可在线阅读,更多相关《VHDL程序设计实践.ppt(59页珍藏版)》请在三一办公上搜索。
1、第5章 VHDL程序设计实践,组合逻辑设计,门电路的种类,门电路是逻辑电路的基本电路。按逻辑与、或、非三种运算,产生三类门电路:与门,或门,非门。输入变量不同,会有二与门,三与门;不同的逻辑运算可由与非门,或非门构成。在组合逻辑电路中,常见门电路有:与非门或非门异或门其他简单门电路,习 题,1CLK信号怎样用VHDL语言描述?2异步复位怎样用VHDL语言描述?3设计一个8位循环移位寄存器。4.设计一个六十进制计数器。5.设计一个八位编码器。6.设计一个三八译码器。7.设计一个N位通用加法器。8.为什么要层次化设计?9 Moore型状态机和Mealy型状态机有什么相同和不同?10一位有效状态机有
2、什么优点?11设计一个3位8状态机。12设计一个PCI BUS VGA图像接口芯片,画出层次分解图,由几个人分别编程,再组合通调,写出一个团体协作的案例,总结成功失败的经验,二输入与非门电路(1),二输入与非门的逻辑方程为:y=a&b(y=a.b)二输入与非门的电路图如图10.1所示。,二输入与非门(2),二输入与非门VHDL程序设计。LIBRARY IEEE;ENTITY nand2 ISPORT(a,b:IN STD_LOGIC;Y:OUT STD_LOGIC);END nand2;Architecture NAND2_1 OF nand2 ISBEGIN Y=a NAND b;END n
3、and2_1;,二输入与非门(3),LIBRARY IEEE;ENTITY nand2 ISPORT(a,b:IN STD_LOGIC;Y:OUT STD_LOGIC);END nand2;ARCHITECTURE nand2_2 OF nand2 ISBEGIN,二输入与非门(4),T1:PROCESS(a,b)VARIABLE comb:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGIN Comb:=a&b;CASE comb IS WHEN 00=y y y y y=X;END CASE;END PROCESS t1;END nand2_2;,编码器真值表,E1 D0
4、D1 D2 D3 D4 D5 D6 D7 Q0 Q1 Q2 GS EO 1 X X X X X X X X 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 00 X X X X X X X 0 0 0 0 0 10 X X X X X X 0 1 0 0 1 0 10 X X X X X 0 1 1 0 1 0 0 10 X X X X 0 1 1 1 0 1 1 0 10 X X X 0 1 1 1 1 1 0 0 0 10 X X 0 1 1 1 1 1 1 0 1 0 10 X 0 1 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 1
5、 1 1 0 1,优先级编码器(1),LIBRARY IEEE;ENTITY priority encoder ISPORT(d:IN Std_Logic_Vector(7 Downto 0);E1:IN Std_Logic;GS,E0:OUT BIT STD_LOGIC;Q:OUT Std_Logic_Vector(2 Downto 0);END priority encoder;,优先级编码器(2),ARCHITECTURE encoder OF prioty encoder ISBEGIN P1:PROCESS(d)BEGIN IF(d(0)=0 AND E1=0)THEN Y=111;
6、GS=0;E0=1;ELSIF(d(1)=0 AND E1=0)THEN Q=110;GS=0;E0=1;,优先级编码器(3),ELSIF(E1=1)THEN Q=111;GS=1;E0=1;ELSIF(d=1111 1111 AND E1=0)THEN Q=111;GS=1;E0=0;END IF;END PROCESS P1;END encoder;,译码器的设计(1),3-8译码器电路(138)功能与编码器的功能相反。输入变量为3个d0,d1,d2,输出变量有8个,即y0y7,对输入变量d0,d1,d2译码,就能确定输出端y0y7的输出端变为有效(低电平),从而达到译码目的。真值表(查书
7、),3-8译码器设计(2),LIBRARY IEEE;ENTITY decoder3_8 ISPORT(a,b,c,g1,g2a,g2b:IN STD_LOGIC;Y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END decoder3_8;ARCHITECTURE rtl OF decoder3_8 ISSIGNAL indata:STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINIndata=c&b&a;,3-8译码器设计(3),PROCESS(indata,g1,g2a,g2b)BEGINIF(g1=1 AND g2a=0 AND g2b=0)TH
8、EN CASE indata IS WHEN 000=y y y y=11110111;,3-8译码器设计(4),WHEN 100=y y y y y=XXXXXXXX;END CASE;ELSE Y=11111111;END IF;END PROCESS;END rtl;,加法器的设计(1),加法器有半加器,全加器两种,利用两个半加器可以构成一个全加器。半加器和全加器的电路示意图。,加法器设计(2),LIBRARY IEEE;ENTITY full_adder IS PORT(a,b,cin:IN STD_LOGIC;Sum,co:OUT STD_LOGIC);END full_adder;
9、ARCHITECTURE full1 OF full_adder ISCOMPONENT half_adder PORT(a,b:IN STD_LOGIC;,加法器设计(3),S,co:OUT STD_LOGIC);END COMPONENT;SIGNAL u0_co,u0_s,u1_co:STD_LOGIC;BEGIN U0:half_adder PORT MAP(a,b,u0_s,u0_co);U1:half_adder PORT MAP(u0_s,cin,sum,u1_co);Co=u0_co OR u1_co;END full1;,半加器的设计,LIBRARY IEEE;ENTITY
10、half_adder IS PORT(a,b:IN STD_LOGIC;S,co:OUT STD_LOGIC);END half_adder;ARCHITECTURE half1 OF half_adder ISSIGNAL c,d:STD_LOGIC;BEGIN C=a OR b;a b c d c0 s d=a NAND b;0 0 0 1 0 0 Co=NOT d;-C0=a and b;0 1 1 1 0 1 S=c AND d;1 0 1 1 0 1END half1;1 1 1 0 1 0,时序逻辑设计,概述:时序逻辑电路又称为同步电路,基础电路包括触发器、寄存器、计数器。由数字电
11、路知道,任何时序电路都以时钟为驱动信号,时序电路只是在时钟信号的边沿到来时,其状态才发生改变。因此,时钟信号是时序电路程序的执行条件,时钟信号是时序电路的同步信号。,时钟的描述,上升沿到来的条件可写为:IF clk=1 AND clk LAST_VAULE=0 AND clk EVENT;时钟信号下降沿的属性描述为:IF clk=0 AND clk LAST_VALUE=1 AND clk EVENT;比较上升沿,下降沿的描述方法,可以归纳出时钟边沿属性描述的一般行式为:IF clock_signal=current_value AND Clock_signal LAST_VALUE AND
12、Clock_signal EVENT,时钟信号作为触发信号(1),时序电路中进程敏感信号是时钟信号在时序电路描述中,时钟信号作为敏感信号,显式的出现在PROCESS语句后的括号中。PRCESS(clock_signal)时序信号边沿的到来将作为时序电路语句执行的条件来启动进程的执行。这种以时钟为敏感信号的进程描述方法为:,时钟信号作为触发信号(2),PROCESS(clock_signal)BEGIN IF(clock_edge_condition)THEN Signal_out=signal_in;其他时序语句 END IF;END PROCESS;clock信号作为进程的敏感信号,每当cl
13、ock发生变化,该进程就被触发、启动,而时钟边沿的条件得到满足时,才真正执行时序电路所对应的语句。,时钟信号作为同步信号,在时序电路的进程描述中,不用敏感信号方式,而用WAIT ON语句来控制程序的执行。在这种设计方式中,进程通常停留在WAIT ON语句上,这个点也称为进程的同步点,只有在时钟信号到来且满足边沿条件时,其余的语句才能执行。WAIT ON语句等待时钟信号的设计方法为:PROCESSBEGINWAIT ON(clock_signal)UNTIL(clock_edge_condition);Signal_out=signal_in;-其他时序语句 END PROCESS;,时钟信号应
14、用,无论IF语句还是WAIT ON语句,对时钟边沿说明时,一定要说明是上升沿还是下降沿。WAIT ON语句,只能放在进程的最前面或最后面。当时钟信号作为进程的敏感信号时,敏感信号表中不能出现一个以上的时钟信号。复位信号和时钟信号可以同时出现在敏感表中。,复位电路,时序电路的初始状态应由复位信号来设置。根据复位信号对时序电路复位的操作不同,使其可以分为同步复位和异步复位。所谓异步复位,就是当复位信号有效时,时序电路立即复位,与时钟信号无关。,同步复位(1),在设计时序电路同步复位功能时,VHDL程序要把同步复位放在以时钟为敏感信号的进程中定义,且用IF语句来描述必要的复位条件。(A)PROCES
15、S(clock_signal)BEGIN IF(clock_edge_condition)THEN IF(reset_condition)THEN Signal_out=reset_value;ELSE Signal_out=signal_in;-其他时序语句 END IF;END IF;END PROCESS;,同步复位(1),PROCESS BEGIN WAIT ON(clock_signal)UNTIL(clock_edge_condition)IF(reset_condition)THEN Signal_out=reset_value;ELSE Signal_out=signal_in
16、;-其他时序语句 END IF;END PROCESS;,异步复位(1),异步复位方法有三个要点:首先,在进程敏感信号表中应有clk,Reset同时存在;其次,用IF语句描述复位条件;最后,ELSIF程序段描述时钟信号边沿的条件,并加clkEVENT属性。,异步复位(2),PROCESS(reset_signal,clock_signal)BEGINIF(reset_condition)THEN-复位条件成立 Signal_out=reset_value;-复位赋予输出信号 ELSIF(clock_event AND clock_edge_condition)THEN Signal_out=s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VHDL 程序设计 实践
链接地址:https://www.31ppt.com/p-6524422.html