一位全减器VHDL 程序

一位全减器VHDL 程序,第1张

数据流描述:

LIBRARY IEEE

USE IEEE.STD_LOGIC_1164.ALL

USE IEEE.STD_LOGIC_UNSIGNED.ALL

ENTITY F_suber1 IS

PORT( A,B :IN STD_LOGIC

CIN :IN STD_LOGIC

DIFF,COUT : OUT STD_LOGIC)

END

ARCHITECTURE example OF F_suber1 IS

SIGNAL S :STD_LOGIC_VECTOR(2 DOWNTO 0)BEGIN

S<=CIN&A&B

PROCESS(A,B,CIN)

BEGIN

CASE S IS

WHEN "000"=>DIFF<='0'COUT<='0'

WHEN "001"=>DIFF<='1'COUT<='1'

WHEN "010"=>DIFF<='1'COUT<='0'

WHEN "011"=>DIFF<='0'COUT<='0'

WHEN "100"=>DIFF<='1'COUT<='1'

WHEN "101"=>DIFF<='0'COUT<='1'

WHEN "110"=>DIFF<='0'COUT<='0'

WHEN "111"=>DIFF<='1'COUT<='1'

WHEN OTHERS=>DIFF<='X'

C

一 bcd加法器。 两位BCD数加法器其事用8位的二进制数加法器就可以了,以下是我最近几天才学的 , 呵呵, 我是EDA的 菜鸟呢

library IEEE

use IEEE.std_logic_1164.all

use ieee.numeric_std.all

entity bcdadder is

port (a: in std_logic_vector(7 downto 0)

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 bcdadder

architecture badder of bcdadder is

signal result : unsigned (8 downto 0)

signal carry : unsigned (8 downto 0)

constant zeros: unsigned (7 downto 0) := (others=>'0')

begin

carry <=(zeros &cin )

result <=('0' &unsigned(a) )+ ('0' &unsigned(b))+carry

sum<= std_logic_vector(result(7 downto 0))

cout <= result (8)

end architecture badder

编译通过,我还没仿真测试呢

后两个晚点写给你,太晚了,虽然明天是周日


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

原文地址: http://outofmemory.cn/yw/11777421.html

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

发表评论

登录后才能评论

评论列表(0条)

保存