VHDL数字电路设计教程第5章习题参考答案
本文关键词:VHDL数字电路设计教程,由笔耕文化传播整理发布。
15075561223
123123
第 5 章习题参考答案
Problem 5.1 library ieee; use ieee.std_logic_1164.all; package my_data_type is constant m: integer :=8; type vector_array is array (n
atural range<>) of std_logic_vector(m-1 downto 0); end my_data_type; library ieee; use ieee.std_logic_1164.all; use work.my_data_type.all; entity n_mux is generic (n: integer :=8); port( datain: in vector_array(0 to n-1) ; sel: in integer range 0 to n-1; dataout: out std_logic_vector( m-1 downto 0)); end; architecture bhv of n_mux is begin dataout<=datain(sel);
end; Problem 5.2 方法一: 方法一:利用简单赋值语句设计 library ieee; use ieee.std_logic_1164.all; entity priority_encoder is port(x:in std_logic_vector(7 downto 1); y:out std_logic_vector(2 downto 0)); end; architecture bhv of priority_encoder is begin y(2)<=x(7) or x(6) or x(5) or x(4); y(1)<=x(7) or x(6) or (( not x(5) and not x(4)) and (x(3) or x(2))); y(0)<=x(7) or (not x(6) and (x(5) or (not x(4) and (x(3) or (not x(2) and x(1)))))); end; 方法二:利用 WHEN 语句设计 方法二: library ieee; use ieee.std_logic_1164.all; entity priority_encoder is port(x:in std_logic_vector(7 downto 1); y:out std_logic_vector(2 downto 0));
end; architecture bhv of priority_encoder is begin y<="111" when x(7)='1' else "110" when x(6)='1' else "101" when x(5)='1' else "100" when x(4)='1' else "011" when x(3)='1' else "010" when x(2)='1' else "001" when x(1)='1' else "000"; end; Problem 5.4 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity adder8 is port(a,b:in std_logic_vector(7 downto 0); cin:in std_logic; sum:out std_logic_vector(7 downto 0); cout:out std_logic); end;
architecture bhv of adder8 is signal a0,b0,cin0, s:std_logic_vector(8 downto 0); begin a0<='0'&a; b0<='0'&b; cin0<="00000000"&cin; s<=a0+b0+cin0; sum<=s(7 downto 0); cout<=s(8); end; Problem5.5 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_signed.all; entity add_sub is port(a,b:in unsigned(7 downto 0); sel:in bit_vector(1 downto 0); sum:out std_logic_vector(8 downto 0)); end; architecture bhv of add_sub is signal temp1,temp2:unsigned (8 downto 0); signal temp3,temp4:signed(8 downto 0);
--signal an,as,sn,ss:std_logic_vector(8 downto 0); signal a0,b0:signed (7 downto 0); signal cin0:std_logic_vector(7 downto 0); begin a0<=conv_signed(a,8); b0<=conv_signed(b,8); temp1<=conv_unsigned((a+b),9); temp2<=conv_unsigned((a-b),9); temp3<=conv_signed((a0+b0),9); temp4<=conv_signed((a0-b0),9); sum<=conv_std_logic_vector(temp1,9)when sel="00" else conv_std_logic_vector(temp3,9)when sel="01" else conv_std_logic_vector(temp2,9)when sel="10" else conv_std_logic_vector(temp4,9); end; Problem 5.6 library ieee; use ieee.std_logic_1164.all; entity gray_encoder is generic(n: integer:=4) ; port(input:in std_logic_vector(n-1 downto 0); output:out std_logic_vector(n-1 downto 0));
end; architecture bhv of gray_encoder is begin output(n-1)<=input(n-1); output(n-2 downto 0)<=input(n-2 downto 0) xor input(n-1 downto 1); end;
Problem 5.7 将原题修改后的作业题, ( 要求能够实现连续移位, shift 当 信号为 0 时,保持不变,否则每次左移移位,最低位补 0,直到全 0 为止。 ) library ieee; use ieee.std_logic_1164.all; entity barrel_shifter is port(inp:in std_logic_vector(7 downto 0); shift: in bit; sel:in integer range 0 to 7; outp:out std_logic_vector(7 downto 0)); end; architecture bhv of barrel_shifter is type matrix is array(7 downto 0) of std_logic_vector (7 downto 0); signal row: matrix;
begin row(0)<=inp; l1:for i in 1 to 7 generate row(i)<=row(0) when shift='0' else row(i-1)(6 downto 0)&'0' ; end generate; outp<=row(sel); end; Problem 5.8 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; entity comp is port(a,b:in integer range 0 to 255; sel:in std_logic; x1,x2,x3:out std_logic); end; architecture bhv of comp is signal a_signed, b_signed: signed(7 downto 0); signal temp: std_logic_vector (1 to 4); begin a_signed<=conv_signed(a,8);
b_signed<=conv_signed(b,8); temp(1)<='1' when a>b else '0'; temp(2)<='1' when a=b else '0'; temp(3)<='1' when a_signed>b_signed else '0'; temp(4)<='1' when a_signed=b_signed else '0'; x1<=temp(1) when sel='0' else temp(3); x2<=temp(2) when sel='0' else temp(4); x3<=not(temp(1) or temp(2)) when sel='0' else not(temp(3) or temp(4)); end;
更多相关文档:
EDA技术实用教程第五版第13章习题答案
EDA技术实用教程第五版第13章习题答案_理学_高等...答:VHDL 支持 BIT 类型和 STRING 类型,其他属于 ...中的包集 合 13-7 函数与过程的设计与功能有什么...
verilog数字系统设计教程习题答案
verilog 数字系统设计教程习题答案 第二章 1.Verilog...4.Verilog HDL 和 VHDL 作为描述硬件电路设计的语言...5.不是 6.将用行为和功能层次表达的电子系统转换...
EDA课后答案
5页 7下载券 EDA技术实用教程课后答案... 19页 ...EDA技术使用教程vhdl(第... 38页 免费 EDA技术与...并在数字电路设计技术、化简优 化算法以及计算机软件...
VHDL程序练习题(含答案)
VHDL习题 9页 1下载券 VHDL第1~3章练习题 8页 ...VHDL数字电路设计教程第... 8页 免费VHD...参考答案 1、 ENTITY 3、 BEGIN 5、 “0000000”...
VHDL程序设计教程习题解答
VHDL程序设计教程习题解答_理学_高等教育_教育专区。《VHDL 程序设计教程》习题参考答案 VHDL 程序设计教程习题参考解答第 1 章思考题解答` ```《VHDL 程序设计教程...
题库
第3章 习题 暂无评价 2页 5财富值 1_填空题库及参考答案 暂无评价 4页 免费...都不对。 5. VHDL 语言是一种结构化设计语言;一个设计实体(电路模块)包括...
protel 99 se 印刷电路板设计教程习题答案
protel 99 se 印刷电路板设计教程习题答案_工程科技...是一个能提供连续的模拟信号和离散的数字信号仿真。...3、交叉参考表:可为多张图纸中的每个元件列出其...
answer5
数字逻辑设计 课后作业答案数字逻辑设计 课后作业答案隐藏>> 第5章【习题答案】...触发器的行为描述(.vhd 文件),此 VHDL 代码应反映图 5.17(a)所示 电路的...
VHDL复习题
数字电路试题及答案 5页 1下载券VHDL复习题 ...(参考 161 页) 【或题目:用 VHDL 设计一个四位二进制加法计数器(161 页) ...
EDA技术习题
EDA技术实用教程习题答案—... 19页 5财富值 EDA...3)设计文档的管理。 4)强大的系统建模、电路仿真...分)1 (3 5. 在 VHDL 设计中,给触发器复位有哪...
更多相关标签:
本文关键词:VHDL数字电路设计教程,,由笔耕文化传播整理发布。
本文编号:246336
本文链接:https://www.wllwen.com/wenshubaike/mishujinen/246336.html