5-7.用74283加法器和逻辑门设计实现一位841bcd码加法器电路,输入输出均为bcd码,ci为低位的进位信号,co为高位的进位信号,输入为两个一位十进制数a,输出用s表示。
设计如下。bdf文件如下:
图中输入a与b均是总线连接,输出s也是总线连接。
**结果如下:
分析如下:**图刚开始时,a=1000,b=0000,ci=0,此时输出s=1000。当**到5.
12us左右时,a=1101,b=1001,ci=0,此时s=0100,同时co=1。因此,此设计是符合逻辑的,是正确的。
5-1-7.以1位二进制全加器为基本元件,用例化语句写出8位并行全加器的顶层文件,并讨论此加法器的电路特征。
分析:首先应设计底层文件,然后在编写顶层文件。
底层文件。半加器设计如下:
library ieee;
use entity h_adder is
port(a,b:in std_logic;
co,so:out std_logic);
end entity h_adder;
architecture fh1 of h_adder is
begin
so<=not(a xor (not b));co<=a and b;
end architecture fh1;
或门设计如下:
library ieee;
use entity or2a is
port(a,b:in std_logic;
c:out std_logic);
end entity or2a;
architecture one of or2a is
beginc<=a or b;
end architecture one;
全加器设计如下:
library ieee;
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
component h_adder
port(a,b:in std_logic;
co,so:out std_logic);
end component;
component or2a
port(a,b:in std_logic;
c:out std_logic);
end component;
signal d,e,f :std_logic;
beginu1:h_adder port map(a=>ain,b=>bin,co=>d,so=>e);
u2:h_adder port map(a=>e,b=>cin,co=>f,so=>sum);
u3: or2a port map(a=>d,b=>f,c=>cout);
end architecture fd1;
得到全加器的rtl图如下:
其中ain,bin为输入,cin为低位的进位,sum为和,cout为向高位的进位。
顶层文件如下:
library ieee;
use entity f_adder8 is
port(ain,bin:in std_logic_vector(7 downto 0);
cin:in std_logic;
sum:out std_logic_vector(7 downto 0);
cout:out std_logic);
end entity f_adder8;
architecture one of f_adder8 is
component f_adder is
port(ain,bin,cin:in std_logic;
cout,sum:out std_logic);
end component;
signal c1,c2,c3,c4,c5,c6,c7:std_logic;
beginu1:f_adder port map(ain=>ain(0),bin=>bin(0),cin=>cin,sum=>sum(0),cout=>c1);
u2:f_adder port map(ain=>ain(1),bin=>bin(1),cin=>c1,sum=>sum(1),cout=>c2);
u3:f_adder port map(ain=>ain(2),bin=>bin(2),cin=>c2,sum=>sum(2),cout=>c3);
u4:f_adder port map(ain=>ain(3),bin=>bin(3),cin=>c3,sum=>sum(3),cout=>c4);
u5:f_adder port map(ain=>ain(4),bin=>bin(4),cin=>c4,sum=>sum(4),cout=>c5);
u6:f_adder port map(ain=>ain(5),bin=>bin(5),cin=>c5,sum=>sum(5),cout=>c6);
u7:f_adder port map(ain=>ain(6),bin=>bin(6),cin=>c6,sum=>sum(6),cout=>c7);
u8:f_adder port map(ain=>ain(7),bin=>bin(7),cin=>c7,sum=>sum(7),cout=>cout);
end architecture one;
得到rtl图如下:
其中ain,bin都为总线输入,都是8位的数据,cin为低位的进位;sum为8位的输出,cout为进位。
**波形图如下:
分析波形:如图在刚开始的时候ain=00000001,b=00000001,ci=0,此时输出sum=00000010,实现了加法运算;当ain=01100000,b=000000111,ci=0,此时输出sum=01100111,同样是正确的。
6-9.根据例4-23设计8位左移移位寄存器,给出时序**波形。
编写程序如下:
library ieee;
use entity shfrt is
port(clk,load:in std_logic;
din:in std_logic_vector(7 downto 0);
qb:out std_logic);
end entity shfrt;
architecture behv of shfrt is
beginprocess(clk,load)
variable reg8:std_logic_vector(7 downto 0);
beginif clk'event and clk='1' then
if load='1' then reg8:=din;
else reg8(7 downto 1):=reg8(6 downto 0);
end if;
end if;
qb<=reg8(7);
end process;
end behv;
得到rtl图如下:
**波形图如下:
分析波形:如图所示,在刚开始时,将数据全部输出,以后在没来一个时钟脉冲的时候,就向高位移一位,也即左移一位,实现了8位左移。
实验6-4题目:32位并进/并出移位寄存器设计。
8位移位寄存器设计:
library ieee;
use entity shift is
port(clk,co:in std_logic;
md:in std_logic_vector(2 downto 0);
d:in std_logic_vector(7 downto 0);
qb:out std_logic_vector(7 downto 0);
cn:out std_logic);
end entity shift;
architecture beh** of shift is
signal reg:std_logic_vector(7 downto 0);
signal cy:std_logic;
beginprocess(clk,md,co)
beginif clk'event and clk='1' then
case md is
when"001" =reg(0)<=co;
reg(7 downto 1)<=reg(6 downto 0);cy<=reg(7);
when"010" =reg(0)<=reg(7);
reg(7 downto 1)<=reg(6 downto 0);
when"011" =reg(7)<=reg(0);
reg(6 downto 0)<=reg(7 downto 1);
when"100" =reg(7)<=co;
reg(6 downto 0)<=reg(7 downto 1);cy<=reg(7);
when"101" =reg(7 downto 0)<=d(7 downto 0);
when others =>reg<=reg;cy<=cy;
end case;
end if;
end process;
qb(7 downto 0) end beh**; 其rtl图如下: 8位锁存器设计: library ieee; use entity dff_8 is port(clk:in std_logic; d: in std_logic_vector(7 downto 0); q: out std_logic_vector(7 downto 0)); end entity dff_8; architecture beh** of dff_8 is beginprocess(clk,d) beginif clk='1' then q<=d; end if; end process; end beh**; 其rtl图如下: 总的设计接线图如下图,用到了4个8位移位寄存器和4个8位锁存器。 实验 testbench timescale 10ns 1ns module tsearcher reg din,clk,rst wire overflow,flag wire 4 0 catch wire 3 0 state,next state wire 7 0 data out catch t... 检验以下模型中是否存在多重共线性,如果存在,请改善。y 新客车 量。x2 新车的消费者 指数,1967 100 x3 消费者 指数 全部项目,全部城市消费者 1967 100 x4 个人可支配收入,10亿美元。x5 利率,百分数。x6 民间就业劳动人数 千人 一 建立模型。其中,是新客车 量 辆 分... 一 单选题。1 监理规划是监理单位重要的 a a 存档资料b 计划文件c 监理资料d.历史资料。2 下列说法中,符合监理规划的是 a a 由项目总监理工程师主持制定b 监理规划是开展监理工作的第一步c 监理规划是签订合同之前制定的d 监理规划相当于工程项目的初步设计。3 由项目监理机构的专业监理工程...eda第五章作业
第五章作业
第五章作业