EDA课后答案

发布 2022-09-02 20:58:28 阅读 3637

p93 3-7

library ieee;

use entity h_suber is

port (

x,y : in std_logic;

diff,s_out : out std_logic

end entity ;

architecture hdlarch of h_suber is

begin

process(x,y) begin

diff <=x xor y;

s_out <=not x) and y

end process;

end hdlarch

1位全减器的vhdl设计文件:

library ieee

use entity suber is

portx,y : in std_logic

sub_in : in std_logic;

diffr : out std_logic;

sub_out : out std_logic

end suber;

architecture scharch of suber is

component h_suber

port(x : in std_logic;

y : in std_logic;

diff : out std_logic;

s_out : out std_logic

end component;

signal t0,t1,t2 : std_logic;

begin

u1 : h_suber

port map(x =>x,

y =>y,

diff =>t0,

s_out =>t1);

u2 : h_suber

port map(x =>t0,

y =>sub_in,

diff =>diffr,

s_out =>t2);

sub_out <=t1 or t2

end; (2)8位减法器。

library ieee;

use entity sub8 is

porta : in std_logic_vector(7 downto 0);

b : in std_logic_vector(7 downto 0

sin : in std_logic;

sout : out std_logic

c : out std_logic_vector(7 downto 0

end sub8;

architecture hdlarch of sub8 is

component suber

port(x : in std_logic;

y : in std_logic;

sub_in : in std_logic;

diffr : out std_logic;

sub_out : out std_logic);

end component

signal stmp : std_logic_vector(8 downto 0);

begin

stmp(0)

sout <=stmp(8);

gensub : for i in 0 to 7 generate

u1 : suber

port map(x =>a(i),

y =>b(i),

sub_in =>stmp(i),

diffr =>c(i),

sub_out =>stmp(i+1));

end generate ;

end; p 93 3-5 用verilog语言设计一个3-8译码器,要求分别用case语句和if_else语句各写一份,比较这两种方式。

解 case 语句:

module decoder38(

input [2:0]code,output reg[7:0]result

always@(*

begin

case(code)

3'b000: result = 8'h01;

3'b001: result = 8'h02;

3'b010: result = 8'h04;

3'b011: result = 8'h08;

3'b100: result = 8'h10;

3'b101: result = 8'h20;

3'b110: result = 8'h40;

3'b111: result = 8'h80;

endcase

endendmodule

if语句:module decoder38(

input [2:0]code,output reg[7:0]result

always@(*

beginif(code[2])

if(code[1])

if(code[0])

result = 8'h80;

elseresult = 8'h40;

elseif(code[0])

result = 8'h20;

elseresult = 8'h10;

elseelse

if(code[1])

if(code[0])

result = 8'h08;

elseresult = 8'h04;

elseif(code[0])

result = 8'h02;

elseresult = 8'h01;

elseend

endmodule

case语句和if 语句的比较:

case语句在编译成硬件电路后,各个分支之间是平行的,优先级是相同的;if语句则具有优先级。

if加若干个else if可以组成一个与case类似的功能。

但由于if-else if是有优先级的,也就是第一个if不成立的话,才判断第二个else if

那么问题就来了,如果这个if组合里有10个else if条件,那么逻辑就需要做一个在一个时钟周期内能判断10个条件的硬件电路来,这样是不明智也是不合理的,比较容易造成时序不满足。

虽然说if有这样的缺点,但它的优点是每个else if都可以判断不同的条件,比较灵活。

一般来说,如果判断的条件只是一个向量的不同值,那么case是最合适的。

EDA课后题答案

第一章。1.什么叫eda技术?及狭义定义 书p1 electronic design automation 电子设计自动化。eda的广义定义范围包括 半导体工艺设计自动化 可编程器件设计自动化 电子系统设计自动化 印刷电路板设计自动化 与测试 故障诊断自动化 形式验证自动化统称eda工程。发展历程 ...

EDA潘松课后全部答案

1 1 eda技术与asic设计和fpga开发有什么关系?p3 4 答 利用eda技术进行电子系统设计的最后目标是完成专用集成电路asic的设计和实现 fpga和cpld是实现这一途径的主流器件。fpga和cpld通常也被称为可编程专用ic,或可编程asic。fpga和cpld的应用是eda技术有机...

EDA潘松课后全部答案

1 1 eda技术与asic设计和fpga开发有什么关系?p3 4 答 利用eda技术进行电子系统设计的最后目标是完成专用集成电路asic的设计和实现 fpga和cpld是实现这一途径的主流器件。fpga和cpld通常也被称为可编程专用ic,或可编程asic。fpga和cpld的应用是eda技术有机...