eda技术实用教程(第五版)习题答案(第1~10章)--潘(1)内容摘要:

BEGIN PROCESS(d_in) BEGIN IF(d_in0101) THEN cmp_out=39。 139。 输入数据大于 5,比较输出 1。 else cmp_out=39。 039。 输入数据小于等于 5,比较输出 0。 END IF。 END PROCESS。 END BHV。 37 利用 if 语句设计一个全加器。 37 利用 if 语句设 计一个全加器 LIBRARY IEEE。 1 位二进制全加器顶层设计描述 USE。 USE。 ENTITY f_adder IS PORT (ain,bin,cin : IN STD_LOGIC。 cout,sum : OUT STD_LOGIC )。 END ENTITY f_adder。 ARCHITECTURE fd1 OF f_adder IS BEGIN PROCESS (ain,bin,cin) BEGIN IF ain=39。 139。 XOR bin=39。 139。 XOR cin=39。 139。 THEN sum=39。 139。 ELSE sum=39。 039。 END IF。 IF (ain=39。 139。 AND bin=39。 139。 )OR(ain=39。 139。 AND cin=39。 139。 )OR(bin=39。 139。 AND cin=39。 139。 )OR(ain=39。 139。 AND bin=39。 139。 AND cin=39。 139。 ) THEN cout=39。 139。 ELSE cout=39。 039。 END IF。 END PROCESS。 END ARCHITECTURE fd1。 38 设计一个求补码的程序,输入数据是一个有符号的 8 位二进制数。 解: 38 设计一个求补码的程序,输入数据是一个有符号的 8 位二进制数。 LIBRARY IEEE。 USE。 USE。 ENTITY _patch IS PORT( _data : IN STD_LOGIC_VECTOR(7 DOWNTO 0)。 原码输入 patch_data : OUT STD_LOGIC_VECTOR(7 DOWNTO 0))。 补码输出 END _patch。 ARCHITECTURE BHV OF _patch IS BEGIN PROCESS(_data) BEGIN IF(_data(7)=39。 039。 ) THEN patch_data=_data。 _data=0,补码 =原码。 else patch_data=_data(7)amp。 (not _data(6 DOWNTO 0))+1。 _data0,补码 =|原码 |取反 +1。 END IF。 END PROCESS。 END BHV。 39 设计一个格雷码至二进制数的转换器。 39 设计一个格雷码至二进制数的转 换器。 LIBRARY IEEE。 USE。 USE。 为使用类型转换函数,打开此程序包。 ENTITY grayTObinary IS port( DIN: IN STD_LOGIC_VECTOR(3 DOWNTO 0)。 DOUT: OUT BIT_VECTOR(3 DOWNTO 0))。 END grayTObinary。 ARCHITECTURE behave OF grayTObinary IS BEGIN PROCESS (DIN) BEGIN CASE DIN IS WHEN 0000 = DOUT=0000。 WHEN 0001 = DOUT=0001。 WHEN 0011 = DOUT=0010。 WHEN 0010 = DOUT=0011。 WHEN 0110 = DOUT=0100。 WHEN 0111 = DOUT=0101。 WHEN 0101 = DOUT=0110。 WHEN 0100 = DOUT=0111。 WHEN 1100 = DOUT=1000。 WHEN 1101 = DOUT=1001。 WHEN 1111 = DOUT=1010。 WHEN 1110 = DOUT=1011。 WHEN 1010 = DOUT=1100。 WHEN 1011 = DOUT=1101。 WHEN 1001 = DOUT=1110。 WHEN 1000 = DOUT=1111。 WHEN OTHERS = NULL。 END CASE。 END PROCESS。 END behave。 310 利用 if 语句设计一个 3 位二进制数 A[2..0]、 B[2..0]的比较器电路。 对于比较 (AB)、(AB)、 (A=B)的结果分别给出输出信号 LT= GT= EQ=1。 310 利用 if 语句设计一个 3 位二进制数 A[2..0]、 B[2..0]的比较器电路。 对于比较 (AB)、 (AB)、 (A=B)的结果分别给出输出信号 LT= GT= EQ=1。 LIBRARY IEEE。 USE。 USE。 ENTITY COMP IS PORT( A,B: IN STD_LOGIC_VECTOR(2 DOWNTO 0)。 两个 3 位输入 LT: OUT STD_LOGIC。 小于输出 GT: OUT STD_LOGIC。 大于输出 EQ: OUT STD_LOGIC)。 等于输出 END ENTITY COMP。 ARCHITECTURE ONE OF COMP IS BEGIN PROCESS(A,B) BEGIN IF (AB) THEN LT=39。 139。 ELSE LT=39。 039。 END IF。 IF (AB) THEN GT=39。 139。 ELSE GT=39。 039。 END IF。 IF (A=B) THEN EQ=39。 139。 ELSE EQ=39。 039。 END IF。 END PROCESS。 LT = (AB)。 小于 GT = (AB)。 大于 EQ = (A=B)。 等于 END ARCHITECTURE ONE。 311 利用 8 个全加器,可以构成一个 8 位加法器。 利用循环语句来实现这项设计。 并以此项设计为例,使用 GENERIC 参数传递的功能,设计一个 32 位加法器。 311 利用 GENERIC 参数和循环语句将 8 个全加器构成成 8 位加法 器 LIBRARY IEEE。 USE。 USE。 USE。 ENTITY ADDER8B IS GENERIC(S: INTEGER:=8)。 定义参数 S 为整数类型,且等于 4 PORT(A,B: IN STD_LOGIC_VECTOR(S1 DOWNTO 0)。 CIN: IN STD_LOGIC。 SUM: OUT STD_LOGIC_VECTOR(S1 DOWNTO 0)。 COUT: OUT STD_LOGIC)。 END ENTITY ADDER8B。 ARCHITECTURE ONE OF ADDER8B IS BEGIN PROCESS(A,B,CIN) VARIABLE S1: STD_LOGIC_VECTOR(S1 DOWNTO 0)。 VARIABLE C1: STD_LOGIC。 _VECTOR(S DOWNTO 0)。 BEGIN C1:=CIN。 C1(0):=CIN。 FOR i IN 1 TO S LOOP IF A(i1)=39。 139。 XOR B(i1)=39。 139。 XOR C1=39。 139。 THEN S1(i1):=39。 139。 ELSE S1(i1):=39。 039。 END IF。 IF (A(i1)=39。 139。 AND B(i1)=39。 139。 )OR(A(i1)=39。 139。 AND C1=39。 139。 )OR(B(i1)=39。 139。 AND C1=39。 139。 )OR(A(i1)=39。 139。 AND B(i1)=39。 139。 AND C1=39。 139。 ) THEN C1:=39。 139。 ELSE C1:=39。 039。 END IF。 END LOOP。 SUM=S1。 COUT=C1。 END PROCESS。 END ARCHITECTURE ONE。 312 设计一个 2 位 BCD 码减法器。 注意可以利用 BCD 码加法器来实现。 因为减去一个二进制数,等于加上这个数的补码。 只是需要注意,作为十进制的 BCD码的补码获取方式与普通二进制数稍有不同。 我们知道二进制数的补码是这个数的取反加 1。 假设有一个 4 位二进制数是 0011,其取补实际上是用 1111 减去 0011,再加上 l。 相类似,以 4 位二进制表达的 BCD 码的取补则是用 9(1001)减去这个数再加上 1。 312 设计 2 位 BCD 码减法器 (利用减去数等于加上该数补码方法 ) (ab=a+[b]补码 ) LIBRARY IEEE。 待例化元件 USE。 USE。 USE。 ENTITY SUB2BCD IS PORT(a,b: IN STD_LOGIC_VECTOR(7 DOWNTO 0)。 diff: out STD_LOGIC_VECTOR(7 DOWNTO 0)。 sout: OUT STD_LOGIC)。 END SUB2BCD。 ARCHITECTURE behave OF SUB2BCD IS BEGIN PROCESS(a,b) VARIABLE cc: STD_LOGIC_VECTOR(7 DOWNTO 0)。 BEGIN IF ab THEN sout=39。 139。 ELSE sout=39。 039。 END IF。 cc:=10011010b。 IF cc(3 DOWNTO 0) 1001 THEN cc:=cc+00000110。 END IF。 IF cc(7 DOWNTO 4) 1001 THEN cc:=cc+01100000。 END IF。 cc:=a+cc。 IF cc(3 DOWNTO 0) 1001 THEN cc:=cc+00000110。 END IF。 IF cc(7 DOWNTO 4) 1001 THEN cc:=cc+01100000。 END IF。 IF ab THEN cc:=10011010cc。 IF cc(3 DOWNTO 0) 1001 THEN cc:=cc+00000110。 END IF。 IF cc(7 DOWNTO 4) 1001 THEN cc:=cc+01100000。 END I。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。