在Quartus软件中,首先采用VHDL语言完成一个2位全加器电路的设计。

在Quartus软件中,首先采用VHDL语言完成一个2位全加器电路的设计。,第1张

library ieee;

use ieeestd_logic_1164all;

use ieeestd_logic_arithall;

use ieeestd_logic_unsignedall;

entity adder16b is

port(cin :in std_logic;

a ,b:in std_logic_vector(15 downto 0);

s : out std_logic_vector(15 downto 0);

cout :out std_logic

);

end adder16b;

architecture behav of adder16b is

signal sint:std_logic_vector(16 downto 0);

signal aa,bb:std_logic_vector(16 downto 0);

begin

aa<='0'&a;

bb<='0'&b;

sint<=aa+bb+cin;

s<=sint(15 downto 0);

cout<=sint(4);

end behav;

这是我在书上看到的,这个是16位的,我认为你把标准逻辑位向量改下估计就能用了,但不知道是不是有效。你试下吧。

LIBRARY IEEE;

USE IEEEstd_logic_1164ALL;

ENTITY my_adder IS

PORT(x,y,clock:IN std_logic;

sum:OUT std_logic);

END my_adder;

architecture behavioral OF my_adder IS

SIGNAL cin,cout,h_adder:std_logic;

BEGIN

h_adder <= x XOR y;

sum <= h_adder XOR cin;

cout <= (x AND Y) OR (h_adder AND cin);

PROCESS(clock)

BEGIN

IF rising_edge(clock) THEN

cin <= cout;

END IF;

END PROCESS;

END behavioral;

library ieee;

use ieeestd_logic_1164all;

use ieeestd_logic_unsignedall;

entity quanjiaqi_2wei is

port(a,b:in std_logic_vector(1 downto 0);

CIN:IN STD_LOGIC;

COUNT:OUT STD_LOGIC_VECTOR(1 DOWNTO 0);

C0:OUT STD_LOGIC);

END QUANJIAQI_2WEI;

ARCHITECTURE VHDL OF QUANJIAQI_2WEI IS

SIGNAL Q_TEMP:STD_LOGIC_VECTOR(2 DOWNTO 0);

BEGIN

Q_TEMP<='0'&A+B+CIN;

C0<=Q_TEMP(2);

COUNT<=Q_TEMP(1 DOWNTO 0);

END VHDL;

2位加法器和一位一样,只是把半加器换为1位全加器就可以了。。。。

ENTITY full_adder IS

PORT(a,b,c_in;IN Bit;

sum,c_out;OUT Bit);

END full_adder;

ARCHITECTURE behavioural OF full_adder IS

BEGIN

PROCESS(a,b,c_in)

BEGIN

IF(a OR b OR c_in)=’0’ THEN

sum <=‘0’;

c_out <=‘0’;

ELSIF(a AND b AND c_in)=’1’ THEN

sum <=‘1’;

c_out <=‘1’;

ELSIF(a XOR b XOR c_in)=’0’ THEN

sum <=‘0’;

c_out <=‘1’;

ELSE

sum <=‘1’;

c_out <=‘0’;

END IF;

END PROCESS;

END behavioural;

上述描述中的标点符号是在全角状态下键入的,你需要将其改成半角字符才能通过编译。

library ieee;

use ieeestd_logic_1164all;

use ieeestd_logic_unsignedall;

entity adder4bit is

port(cin: in std_logic;

a,b: in std_logic_vector(3 downto 0);

s: out std_logic_vector(3 downto 0);

cout: out std_logic );

end adder4bit;

architecture beh of adder4bit is

signal sint: std_logic_vector(4 downto 0);

signal aa,bb: std_logic_vector(4 downto 0);

begin

aa<='0' & a (3 downto 0);

bb<='0' & b(3 downto 0);

sint<= aa+bb+cin;

s(3 downto 0) <= sint (3 downto 0);

cout<= sint(4);

end beh;

供参考

Max+PlusII QuartusII 应该都可以用的

1位全加器是由2个1位半加器和1个或门构成的。

如果你已经有1位半加器的描述文件了(vhd),那么就在1位全加器的描述中,用2个元件例化语句描述2个半加器,然后用1个信号赋值语句描述1个或门就行了。

以上就是关于在Quartus软件中,首先采用VHDL语言完成一个2位全加器电路的设计。全部的内容,包括:在Quartus软件中,首先采用VHDL语言完成一个2位全加器电路的设计。、图中的 f_adder是一位全加器,cin 是输入进位,cout 是输出进位。试给出此电路的VHDL描述。、两位全加器的设计及VHDL的设计等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9598301.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存