




已阅读5页,还剩42页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
,重点知识点,组合电路的VHDL描述 时序电路的VHDL描述 常用实用电路模块设计,组合电路的VHDL描述 组合逻辑电路即任意时刻的输出仅仅取决于该时 刻的输入,与电路原来的状态无关。 但是在设计中,我们一般以时钟的存在与否来区 分该电路的性质。组合逻辑电路不需要时钟,在 使用VHDL语言时,可以采用进程process语句,省略了库声明和程序包说明ENTITY mux41a ISPORT( a, b,c,d : IN BIT ; s : IN BIT_vector(1 downto 0); y : OUT BIT ) ;END ENTITY mux41a ;ARCHITECTURE one OF mux41a IS BEGIN y = a WHEN s = “00” ELSE b WHEN s = “01” ELSE c WHEN s = “10” ELSE d;END ARCHITECTURE one ;,例1 1位数据宽度的4选1数据选择器,省略了库声明和程序包说明在结构体中采用并行的WHEN_ELSE语句。ENTITY mux41a ISPORT( a, b,c,d : IN BIT_vector(7 downto 0); s : IN BIT_vector(1 downto 0); y : OUT BIT_vector(7 downto 0) ) ;END ENTITY mux41a ;ARCHITECTURE one OF mux41a IS BEGIN y = a WHEN s = “00” ELSE b WHEN s = “01” ELSE c WHEN s = “10” ELSE d;END ARCHITECTURE one ;,例2 8位数据宽度的4选1数据选择器,在进程中采用IF_THEN_ELSE语句LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY mux81a ISPORT( a,b,c,d,e,f,g,h : IN BIT_vector(7 downto 0); s : IN BIT_vector(2 downto 0); y : OUT BIT_vector(7 downto 0) ) ;END ENTITY mux81a ; 接下页,例3 8位数据宽度的8选1数据选择器,- 库,ARCHITECTURE one OF mux81a ISBEGIN PROCESS(a,b,c,d,e,f,g,h, s) BEGIN IF s = “000” THEN y=a; ELSIF s = “001” THEN y=b; ELSIF s = “010” THEN y=c; ELSIF s = “011” THEN y=d; ELSIF s = “100” THEN y=e; ELSIF s = “101” THEN y=f; ELSIF s = “110” THEN y=g; ELSE y=h; END IF; END PROCESS ;END ARCHITECTURE one ;,接上页,例4 1位数据宽度的1分4数据分配器,数据分配器的功能与数据选择器恰好相反,它根据控制信号S0与S1的不同取值,X端的数据将分配到不同的输出端口输出。,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY demux41a ISPORT( X : IN BIT ; s0,s1 : IN BIT; y0, y1,y2,y3 : OUT BIT ) ;END ENTITY demux41a ;,ARCHITECTURE one OF demux41a IS SIGNAL S:BIT_vector(1 downto 0); BEGIN S Y0 Y1 Y2 Y3=x; End case; End process;END ARCHITECTURE one ;,1分4的数据分配器的RTL图,1分4的数据分配器的时序仿真,思考和操作题:如果此条语句去掉,RTL图和仿真如何?,ARCHITECTURE one OF demux41a IS SIGNAL S:BIT_vector(1 downto 0); BEGIN S Y0 Y1 Y2 Y3 LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S NULL ; END CASE ; END PROCESS ;END ;,例6 8-3优先编码器设计,编码器功能与译码器相反,是将较多位数的码值编成较少位数的码值。优先编码器的编码原则是按照由高位到低位的原则,逐次判断该位是否为有效数值0或1,若为有效数值0或1,则按照该位的位置进行编码,而忽略后续各位的数值。,8-3优先编码器的编码原则是:8个 输入端中的一个输入如果有效,如本例为0,则有一个 3 位二进编码输出;若同时有多个输入端输入为0,则输出优先级高的那个输入端所对应的编码。,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY coder IS PORT ( din : IN STD_LOGIC_VECTOR(0 TO 7); output : OUT STD_LOGIC_VECTOR(0 TO 2) );END coder;ARCHITECTURE behav OF coder IS BEGIN PROCESS (din) BEGIN IF (din(7)=0) THEN output = 000 ; ELSIF (din(6)=0) THEN output = 100 ; ELSIF (din(5)=0) THEN output = 010 ; ELSIF (din(4)=0) THEN output = 110 ; ELSIF (din(3)=0) THEN output = 001 ; ELSIF (din(2)=0) THEN output = 101 ; ELSIF (din(1)=0) THEN output = 011 ; ELSE output = 111 ; END IF ; END PROCESS ;END behav;,时序逻辑电路的VHDL描述 时序逻辑电路的输出不但与输入有关,还和系统 上一个状态有关。 时序逻辑电路即电路需要时钟,在使用VHDL语 言时,必须采用进程process语句。,分频器的设计,分频器的设计:有时候根据需求,需要将周期密的时钟变为周期疏的时钟,实际上,前面介绍的计数器在功能上实际也是分频器,四位计数器的计数输出的最高位信号就是输入时钟信号的16分频,最低位为输入时钟的2分频。对于一些非2的整数次幂的分频,如5分频、6分频,还需要在基本计数器电路中加上复位控制电路,entity fenpin isport( clk : in std_logic;-时钟输入 dout : out std_logic);-分频输出end fenpin;architecture hav of fenpin is signal qout:std_logic_vector(3 downto 0); signal f :std_logic;beginprocess(clk)beginif (clkevent and clk=1) then if (qout=0011) then qout=0000; f=not f; else qout=qout+1; end if;end if;end process;dout=f;end hav;,8分频的程序设计,语句2-,8分频的仿真波形,编一个16分频的程序,并实验仿真,流水灯实验,所谓流水灯,就是让LED灯的亮灭模拟流水,按照顺序使LED灯依次点亮。,8个灯依次点亮的流水灯实验library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity lled isport ( clk : in std_logic; dout : out std_logic_vector(7 downto 0) );end lled;,architecture hav of lled is signal q:std_logic_vector(7 downto 0); signal d:std_logic_vector(2 downto 0);begin process(clk) begin if clkevent and clk=1 then d=d+1; end if; end process; with d select q=10000000 when 000, 01000000 when 001, 00100000 when 010, 00010000 when 011, 00001000 when 100, 00000100 when 101, 00000010 when 110, 00000001 when others; dout=q;end hav;,语句3-,流水灯仿真,编写一个16个灯依次点亮的流水灯实验,并仿真,数字钟的设计,设计一数字钟,具有以下功能:1.具有小时、分钟、秒计数显示功能,以24小时循环计 时,SECOND模块为60进制,实现秒计时;MINUTE模块 为60进制,实现分计时功能;HOUR模块为24进制,实 现小时计时,整个计数器具有清零、调分、调时功 能,而且在接近整点时提供报时信号。2.有驱动8位七段共阴极数码管的片选驱动信号输出和七 段码输出。在图中SELTIME模块产生8位数码管的扫描 驱动信号SEL2.0和时钟显示数据DAOUT3.0, SEL2.0信号经过译码器后作为数码管的位选信号, DELED模块为7段数码管3.分位计数到59分时,即到整点时,LD1将开始闪烁,并 持续1分钟。,数字钟的设计,74393为双四位二进制计数器,最后一个74393的Q2B端将输出时间周期为1秒的脉冲,实验室提供的脉冲信号频率为4.07MHZ,即该信号的周期为0.0000002457秒,16*clk,16*16*clk,秒脉冲产生模块,秒、分、时模块,Alert整点报时模块,Seltime为小时、分钟、秒分配相应的片选和数码管模块,它后面需要接3-8译码器,作为8个数码管的片选信号,它后面需要接数码显示的7段译码电路,小时,分,秒,清0或复位,DELED为驱动数码管显示的7段译码电路,74138为38译码器,ENTITY DFF1 ISPORT ( D: in BIT;clk: in BIT; Q: out BIT);END DFF1;ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1 : STD_LOGIC ;BEGIN PROCESS (CLK,Q1) BEGIN IF CLKEVENT AND CLK = 1 THEN Q1 = D ; END IF; END PROCESS ; Q = Q1 ; END bhv;,D触发器的设计,LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF3 IS PORT ( CLK,D1 : IN STD_LOGIC ; Q1 : OUT STD_LOGIC); END ; ARCHITECTURE bhv OF DFF3 IS SIGNAL A : STD_LOGIC ; BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN A = D1; Q1 =A; END IF; END PROCESS ; END ;,同步时序电路设计,ARCHITECTURE bhv OF MULTI_DFF IS SIGNAL Q1,Q2 : STD_LOGIC; BEGINPRO1:PROCESS (CLK) BEGIN IF CLKEVENT AND CLK=1 THEN Q1 = NOT (Q2 OR A); END IF; END PROCESS ;PRO2:PROCESS (Q1) BEGIN IF Q1EVENT AND Q1=1 THEN Q2 = D; END IF; Q3 = Q2 ; END PROCESS ;END MULTI_DFF;,LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY MULTI_DFF IS PORT ( CLK :IN STD_LOGIC ; D1 :IN STD_LOGIC ; A :IN STD_LOGIC ; Q3 : OUT STD_LOGIC); END ;,异步时序电路设计,注意事项一个进程只允许描述对应于一个时钟信号的同步时序逻辑 ;异步逻辑最好用多个时钟进程语句来构成。,JK触发器的设计,JK触发器是具有两个输入端J和K,且当前输出结果与前一刻的输出结果有关。,library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity JK isport(J,K,clk: in std_logic; Q: out std_logic);end JK;architecture one of JK is signal Q1:std_logic;begin process(clk) begin if clkevent and clk=1 then Q1=(J and (not Q1)or(not K) and Q1 ) ; end if; end process; Q=Q1;end one;,JK触发器的VHDL程序,JK触发器的功能仿真图,含异步清0和同步时钟使能的4位计数器,设计一含计数使能、异步复位和计数值并行预置功能的4位计数器。其中RST是异步复位信号,当RST为1时,输出端被请零,当RST为0时计数器正常工作;CLK是时钟信号;EN为使能端,当EN为1时,计数器能工作,自加1;当EN为0时,计数器被禁止,不再计数,输出端输出“0000” 。,LIBRARY I
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论