收藏 分享(赏)

EDA技术实用教程课后答案---潘松,黄继业.docx

上传人:kaixinyidian 文档编号:12044188 上传时间:2021-08-18 格式:DOCX 页数:22 大小:160.94KB
下载 相关 举报
EDA技术实用教程课后答案---潘松,黄继业.docx_第1页
第1页 / 共22页
EDA技术实用教程课后答案---潘松,黄继业.docx_第2页
第2页 / 共22页
EDA技术实用教程课后答案---潘松,黄继业.docx_第3页
第3页 / 共22页
EDA技术实用教程课后答案---潘松,黄继业.docx_第4页
第4页 / 共22页
EDA技术实用教程课后答案---潘松,黄继业.docx_第5页
第5页 / 共22页
点击查看更多>>
资源描述

1、3-3给出一个4选1多路选择器的VHDL描述。选通控制端有四个输入: SO、S1、S2、S3。当且 仅当 S0=0 时:Y=A ; S1=0 时:Y=B ; S2=0 时:Y=C ; S3=0 时:Y=D。一解:4选1多路选择器VHDL程序设计。LIBRARY IEEE;USE IEEE.STD LOGIC 1164.ALL;ENTITYmux41alSPORT( A,B,C,D : IN STD_LOGIC;S0,S1,S2,S3 : IN STD_LOGIC;Y:OUT STD_LOGIC);END ENTITY mux41 a;ARCHITECTURE one OF mux41a ISS

2、IGNAL S0_3 : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINS0_3=S0&S1&S2&S3;y=A WHEN S0_3=0111 ELSEB WHEN S0_3=1011” ELSEC WHEN S0_3=1101” ELSE D WHEN S0_3=n1110 ELSE Z;END ARCHITECTURE one;3-4i位至/段布则 veul描理,敢於头现 加且全般布笠2K :1)首先设计xin位半减器,然后用例彳重句将它们连接起来,图4-20中h_suber是半减器(diff=x-y),s_out 是需虚输出(s_out=1 ,xy),sub_in

3、 是借位输小人。0t,diff是输出yin图3-19 1位全加器-解(1.1):实现 1 位半减器 h_suber(diff=x-y ; s_out=1 ,xy) LIBRARY IEEE;USE IEEE.STD LOGIC 1164.ALL; ENTITY h suber IS PORT( x,y: IN STD_LOGIC;diff,s_out: OUT STD_LOGIC);END ENTITY h_suber; ARCHITECTURE hs1 OF h_suber IS BEGINDiff = x XOR (NOT y);s_out xin,y=yin, diff=a, s_out

4、=b);u2: h_suber PORT MAP(x=a, y=sub_in, diff=diff_out,s_out=c); sub out xO,yin=yO,diff_out=diffO,sub_in=sin,sub_out=aO); u1 :f_suber PORT MAP(xin=x1 ,yin=y1 ,diff_out=diff1 ,sub_in=a0,sub_out=a1); u2:f_suber PORT MAP(xin=x2,yin=y2,diff_out=diff2,sub_in=a1 ,sub_out=a2); u3:f_suber PORT MAP(xin=x3,yin

5、=y3,diff_out=diff3,sub_in=a2,sub_out=a3); u4:f_suber PORT MAP(xin=x4,yin=y4,diff_out=diff4,sub_in=a3,sub_out=a4); u5:f_suber PORT MAP(xin=x5,yin=y5,diff_out=diff5,sub_in=a4,sub_out=a5); u6:f_suber PORT MAP(xin=x6,yin=y6,diff_out=diff6,sub_in=a5,sub_out=a6); u7:f_suber PORT MAP(xin=x7,yin=y7,diff_out

6、=diff7,sub_in=a6,sub_out=sout);END ARCHITECTURE s8;3-8设计一个求补码的程序,输入数据是一个有符号的8位二进制(原码)数。-解:5-9设计一个求补码的程序,输入数据是一个有符号的 8位二进制数。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY org_patch ISPORT( org_data : IN STD_LOGIC_VECTOR(7 DOWNTO 0);-原码输入patch_data : OUT STD_LOGIC_VECT

7、OR(7 DOWNTO 0);-补码输出END orgjDatch;ARCHITECTURE BHV OF org_patch ISBEGIN PROCESS(org_data)BEGINIF(org_data(7)=0) THEN patch_data=0 ,补码=原石马。else patch_data=org_data(7)&(not org_data(6 DOWNTO 0)+1 ;-org_data0 ,补码=|原码 |取反 +1 END IF;END PROCESS;END BHV;310library ieee;use ieee.std_logic_1164.all;use ieee

8、.std_logic_unsigned.all;entity add isport(a:in std_logic_vector(7 downto 0); b:in stdjogic_vector(7 downto 0); ci:in stdjogic; co:out stdjogic;count:out std_logic_vector(7 downto 0); end add;architecture bhv of add is beginprocess(a,b,ci)variable data:stdJogic_vector(1 downto 0); variable c:std_logi

9、c;beginc:=ci;for n in 0 to 7 loop data:=(,0,&a(n)+(,0&b(n)4-(,0&c); count(n)=data(0);c:=data(1);end loop;co=c;end process; end bhv;3-1 4用循环语句设计一个7人投票表决器,及一个4位4输入最大数值检测电路。-解:5-7用 循环语句设计一个7人投票表决器,及一个4位4输出最大数值检测电路。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY vote_7 IS

10、PORT( DIN: IN STD_LOGIC_VECTOR(6 DOWNTO 0);-7 位表决输入(1 :同意,G_4: 0:不同意) OUT STD_LOGIC;-超过半数指示CNTH: OUT STD_LOGIC_VECTOR(2 DOWNTO 0);-表决结果统计数END vote_7;ARCHITECTURE BHV OF vote_7 ISBEGINPROCESS(DIN)VARIABLE Q: STD_LOGIC_VECTOR(2 DOWNTO 0); BEGINQ:=000;FOR n IN 0 TO 6 LOOP n 是 LOOP 的循环变量 IF(DIN(n)=)THEN

11、 Q:=Q+1; END IF;END LOOP;CNTH=4 THEN G_4v=T; ELSE G_4U);ELSIF CLKEVENT AND CLK= THEN一计数器异步复位IF EN=1 THEN-检机褊梯陲或加 同步使能)IF LOAD=0, THEN Q:=DA TA;载一您耐钾上升-允许加载ELSEIF Q0);-大于等于9时,计数值清零END IF;END IF;END IF;END IF;IF Q=9 THEN COUT=1;-计数大于9,输出进位信号ELSE COUT=0;END IF;DOUT 0);ELSIF LOAD = T THEN CQI:=DATA;ELSI

12、F CLKEVENT AND CLK=1THENIF ADD_EN=TTHENIF CQI U);END IF;IF CQI=16#FFFF# THEN COUTv士1ELSE COUT 0 THEN CQI:=CQI-1;ELSECQI:=(OTHERS =T);一计数器异步复位-LS_LOAD:=01;-计数器异步复位一检测时钟上升沿一检测是否允许计数(同步他 能)-允许计数,检测是否小于 65535一大于65535,计数值清零-检测是否允许计数(同步他能)-允许计数,检测是否小于65535END IF;-计数大于9,输出进位信号-将计数值向端口输出IFCQI=O THEN COUTv=T

13、;ELSE COUT = O;END IF;END IF;END IF;CQ=CQI;END PROCESS;END ARCHITECTURE A S 16;5-9 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity m6 isport(clk,rst:in stdjogic;q: out std_logic_vector(2 downto 0); end m6;architecture bhv of m6 istype states is(stO,st1 ,st2,st3,st4,st

14、5); signal stx:states;begin process(clk)beginif rst=1 then stx=stO;qq=OOOn;stxq=001 n;stxq=011 n;stxq=111 n;stxq=H101 n;stxq=1 OOn;stx stx=stO; end case;end if;end process;end bhv;IF shift_cnt=4 THEN -shift_cnt:=OOO;-P out=shift Q; o_e_out=shift_Q(4) shift_Q(O);-奇校验输出接收数据并行输出XOR shift_Q(3)shift_Q:=S

15、Jn & shift_Q(4 DOWNTO 1);-ELSEXOR shift_Q(2) XOR shift_Q(1)采样移位串行输入XOR5-1 2用同步时序电路对串行二进制输入进行奇偶校验,每检测 5位输入,输出一个结果。当5位 输入中1的数目为奇数时,在最后一位的时刻输出1。-解:4-12用同步时序电路对串行二进制输入进行奇偶校验,每检测 5位输入,输出一个结-当5位输入中1的数目为奇数时,在最后一位的时刻输出 果。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY odd_eve

16、n_p_RXD_5 ISPORT(CLK,RST,SJn: IN STD_LOGIC;-CLK 、RST、SJn:时钟、复位、串行输入数据P_out: OUT STD_LOGIC_VECTOR(4 DOWNTO 0);-P_out:并行输出数据o_e_out: OUT STD_LOGIC); -o_e_out:奇校验输出位END ENTITY odd_even_p_RXD_5;ARCHITECTURE one OF odd_even_p_RXD_5 IS BEGINPROCESS(CLK,RST)VARIABLE shift_Q : STD_LOGIC_VECTOR(4 DOWNTO O);-

17、shift_Q:移位寄存器VARIABLE shift_cnt : STD_LOGIC_VECTOR(2 DOWNTO O);-shift_cnt:移位计数器BEGINIF CLKEVENT AND CLK=1THEN -检测时钟上升沿IF RST = 1 THEN sh阴_cnt:=100M; -ELSE移位寄存器和计数器复位检测到接收5位串行输入数据移位计数器清零,为接收下一组数据做准备。采样移位串行输入shift_cnt:=shift_cnt+1移位计数 shift_Q:=SJn & shift_Q(4 DOWNTO 1);-END IF;END IF;END IF;END PROCES

18、S;END ARCHITECTURE one;5-5分频方法有多种,最简单的是二分频和偶数分频甚至奇数分频,这用触发器或指定计数模的计数 器即可办到。但对于现场实现指定分频比或小数分频率的分频电路的设计就不是很简单了。试对例3-20的设计稍作修改,将其进位输出COUT与异步加载控制LOAD连在一起,构成一个自 动加载型16位二进制数计数器,也即一个16位可控的分频器,给出其VHDL表述,并说明工作原理。 设输入频率fi=4MHz,输出频率fo=516.51Hz(允许误差士 0.1 Hz),16位加载数值是多少?-解:3-9 16位数控分频器(可进行奇偶数分频)LIBRARY IEEE;USE

19、IEEE.STD LOGIC 1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DVF16 ISPORT(CLK : IN STD_LOGIC;D : IN STD_LOGIC_VECTOR(15 DOWNTO 0);FOUT : OUT STD_LOGIC);END ENTITY DVF16;ARCHITECTURE one OF DVF16 ISSIGNAL FULL: STD_LOGIC;BEGINP_REG: PROCESS(CLK)VARIABLE CNT8 : STD_LOGIC_VECTOR(15 DOWNTO 0);BEGINIF

20、CLKEVENT AND CLK = T THENIF CNT8 = 0000000000000000n THENCNT8 := D-1;-当 CNT8 计数归 0 时,预置 CNT8=D-1;-计数范围(D=n) : n-1n/2取整(n=10:98765计数,前后半周期相同)FULL = T;同时使溢出标志信号FULL输出为高电平-(n=11:1098765计数,前比后半周期多一个时钟)ELSIF CNT8 = (O & D(15 DOWNTO 1) THENCNT8 :=(0 & D(15 DOWNTO 1)-1当 CNT8=n/2 取整时,预置 CNT8=D/2 取整-1;一计数范围(

21、D=n) : n/2 取整 0(n=10:43210 计数)FULL v= T;-同时使溢出标志信号FULL输出为高电平(n=11:43210计数)ELSE CNT8 := CNT8-1; 一否则继续作加1计数FULL = 0;-且输出溢出标志信号FULL为低电平END IF;END IF;END PROCESS P_REG ;P_DIV: PROCESS(FULL)VARIABLE CNT2 : STD_LOGIC;BEGINIF FULLEVENT AND FULL = 1 THENCNT2 := NOT CNT2;-如果溢出标志信号FULL为高电平,D触发器输出取反IF CNT2 = T

22、HEN FOUT = 1 匚 ELSE FOUT = O;END IF;END IF;END PROCESS P_DIV;END ARCHITECTURE one;5.6U U 分别给出图3-20所示的六个RTL图的VHDL描述,注意其中的D触发器和锁存器的表述。D,CL/Q*D:Q17DQ1-1AO-rONk-R i图 3-20 RTL 图D Q1-(a)图 3-20 RTL 图(a) 一解:实现图 3-20(a)RTL 图的 VHDL 程序 t3_12_a.vhd LIBRARYIEEE;USE IEEE.STD LOGIC 1164.ALL;ENTITY t3_12_a ISPORT (

23、CL,CLK0: IN STD_LOGIC;OUT1: OUT STD_LOGIC);END ENTITY t3_12_a;ARCHITECTURE sxdl OFt3_12_a IS时序电在各 sxdlSIGNAL Q : STD_LOGIC;BEGINPROCESS(CLKO)BEGINIF CLKOEVENT AND CLK0=1Q = THEN 一检测时钟上升沿 NOT(Q OR CL);END IF;END PROCESS;OUT1 = NOT Q;END ARCHITECTURE sxdl;一解:实现图 3-20(b)RTL 图的 VHDL 程序 t3_12_b.vhd LIBRA

24、RY IEEE;USE IEEE.STD LOGIC 1164.ALL;ENTITY t3_12_b ISPORT (A,B,C,D: IN STD_LOGIC;Y: OUT STD_LOGIC);END ENTITY t3_12_b;ARCHITECTURE sxdl OFt3_12_b IS 时序电路 sxdlSIGNAL AB,CD,ABCD : STD_LOGIC; BEGINPROCESS(A,B,C,D,AB,CD,ABCD)BEGINAB=A OR B;CD=C AND D;ABCD Y NULL ;END CASE;END PROCESS;END ARCHITECTURE sx

25、dl;SlatchPRE 0 QEMACLP图 3-20 RTLg( c)解1 :实现图320(c)RTL图的VHDL程序mux21a.vhd底层设计描述。-用(WHEN_ELSE)实现2选1多路选择器程序(mux21a.vhd) 0LIBRARY IEEE;USE IEEE.STD LOGIC 1164.ALL;ENTITYmux21alSPORT(a,b : IN STD_LOGIC; s : IN STD_LOGIC; y : OUT STD_LOGIC);END ENTITY mux21 a;ARCHITECTURE one OF mux21a ISBEGINy=a WHEN s=0,

26、 ELSE b;END ARCHITECTURE one;一解2 :实现图3-20(c)RTL图的VHDL程序DFF6.vhd底层设计描述。-电平 触发D型触发器程序(DFF6.vhd)LIBRARY IEEE;USE IEEE.STD LOGIC 1164.ALL;ENTITY DFF6 ISPORT(CLK: IN STD_LOGIC;D: IN STD_LOGIC; Q:OUT STD_LOGIC);END;ARCHITECTURE bhv OF DFF6 ISBEGIN PROCESS(CLK,D)BEGINIFCLK=1THEN Q=D;END IF;END PROCESS;END

27、bhv;-解3 :实现图320RTL图的VHDL程序t3_12_c.vhd顶层设计描述。LIBRARY IEEE;USE IEEE.STD LOGIC 1164.ALL;ENTITY t3_12_c ISPORT(D1,D2,CLK : IN STD_LOGIC;Q :OUT STD_LOGIC);END ENTITY t3_12_c;ARCHITECTURE one OFt3_12_c ISCOMPONENT mux21 a -调用2选1多路选择器声明语句 PORT(a,b : IN STD_LOGIC;s : IN STD_LOGIC; y : OUT STD_LOGIC);END COM

28、PONENT;COMPONENT DFF6 -调用电平型D触发器声明语句PORT(CLK: IN STD_LOGIC;D: IN STD_LOGIC;Q:OUT STD_LOGIC);END COMPONENT;SIGNAL DD: STD_LOGIC; 一定义1个信号作为内部的连接线。BEGINu1: mux21 a PORT MAP(CLK,D2,D1 ,DD);u2: DFF6 PORT MAP(CLK,DD,Q);END ARCHITECTURE one;ex图 3-20 RTL 图(d)解1 :实现图320(d)RTL图的VHDL程序DFF_PRE.vhd底层设计描述-带预置、清零和

29、输出使能的D触发器程序(DFF_PRE.vhd)。LIBRARY IEEE;USE IEEE.STD LOGIC 1164.ALL;ENTITY DFF_PRE_CLR_ENA ISPORT(CLK : IN STD_LOGIC;D : IN STD_LOGIC;Q :OUT STD_LOGIC;ENA : IN STD_LOGIC;PRE : IN STD_LOGIC;CLR : IN STD_LOGIC);END;ARCHITECTURE bhv OF DFF_PRE_CLR_ENA ISSIGNAL Q1:STD_LOGIC;-类似于在芯片内部定义一个数据的暂存节点BEGINPROCES

30、S(CLK,D,Q1,ENA,PRE,CLR)BEGINIFCLR=TTHENQ1v=O;ELSIFPRE=TTHENQ1v=T;ELSIF CLKEVENT AND CLK=f1 AND ENA=1 THEN Q1=D;END IF;-IF EN=1THEN Q=Q1;-将内部的暂存数据向端口输出-END IF;Q=Q1 ; -将内部的暂存数据向端口输出END PROCESS;END bhv;一解2 :实现图320(d)RTL图的VHDL程序t3_12_d.vhd顶层设计描述LIBRARY IEEE;USE EEE.STD LOGIC 1164.ALL; ENTITY t3 12 d ISP

31、ORT(SET,D,CLK,EN,RESET : IN STD_LOGIC;Q:OUT STD_LOGIC);END ENTITY t3 12 d; ARCHITECTURE one OF t3 12 d ISCOMPONENT DFF_PRE_CLR_ENA 一调用D角虫发器声明语句PORT(CLK : IN STD_LOGIC;D : IN STD_LOGIC; Q :OUT STD_LOGIC; ENA : IN STD_LOGIC; PRE : IN STD_LOGIC;CLR : IN STD_LOGIC); END COMPONENT;SIGNAL SS: STD_LOGIC; 一

32、定义1个信号作为内部的连接线。BEGINSS=SET AND (NOT RESET);u1: DFF_PRE_CLR_ENA PORT MAP(CLK,D,Q,EN,SS,RESET); END ARCHITECTURE one;图 3-20 RTL 图(e)解1 :实现图3.20(e)RTL图的VHDL程序DFF_PRE_CLR.vhd底层设计描述一带预置、清零和输出 使能的D触发器程序(DFF_PRE_CLR.vhd)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DFF_PRE_CLR_ENA ISPORT(CLK : IN STD_LOG

33、IC;D : IN STD_LOGIC;Q :OUT STD_LOGIC;ENA : IN STD_LOGIC;PRE : IN STD_LOGIC;CLR : IN STD_LOGIC);END;ARCHITECTURE bhv OF DFF_PRE_CLR_ENA ISSIGNAL Q1:STD_LOGIC;-类似于在芯片内部定义一个数据的暂存节点BEGINPROCESS(CLK,D,Q1,ENA,PRE,CLR) BEGINIFCLR=TTHENQ1v=U;ELSIF PRE=T THEN Q1 v=T;ELSIF CLKEVENT AND CLK=1 AND ENA=1 THEN Q1

34、=D;END IF;-IF EN=T THEN Q=Q1;-将内部的暂存数据向端口输出-END IF;Q=Q1;-将内部的暂存数据向端口输出END PROCESS;END bhv;一解2 :实现图320(e)RTL图的VHDL程序t3_12_d.vhd顶层设计描述LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY t3_12_e ISPORT(D,EN,CLK,RST : IN STD_LOGIC;Q1,Q :OUT STD_LOGIC);END ENTITY t3 12 e;ARCHITECTURE one OF t3_12_e ISCOMPONE

35、NT DFF_PRE_CLR_ENA 一调用D角虫发器声明语句PORT(CLK : IN STD_LOGIC;D : IN STD_LOGIC;Q :OUT STD_LOGIC;ENA : IN STD_LOGIC;PRE : IN STD_LOGIC;CLR : IN STD_LOGIC);END COMPONENT;SIGNAL D_EN: STD_LOGIC; 一定义1个信号作为内部的连接线。BEGIND_ENCLK,D=D,Q=Q,ENA=EN,PRE=,O,CLR=RST);Q1=(NOT D_EN) OR RST;END ARCHITECTURE one;Q-reoO图 3-20 RTL 图(f )-解1 :实现图3-20RTL图的VHDL程序mux21a.vhd底层设计描述一用 WHEN_ELSE 实现 2 选 1 多路选择器程序(mux21a.vhd) UBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux21alSPORT(a,b : IN STD_LOGIC; s : IN STD_LOGIC; y : OUT STD_LOGIC);END ENTITY mux

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 简明教程

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报