EDA第五章作业

发布 2022-09-02 21:08:28 阅读 9644

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位锁存器。

eda第五章作业

实验 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 由项目监理机构的专业监理工程...