VHDL ModelSim对于全加器(fulladder)仿真结果与VWF不一样的处理方法(含八位二进制扩展)

        首先对于所有的文件都要添加1164,arith与unsigned这三个头文件(我当时仅添加了1164导致fulladder仿真结果不正确)。随后,将fulladder中的运算加入到process,process括号内的敏感变量含有使能端,第一个数字,第二个数字以及进位。同时有玄学因素,我已开始使用了一个中间信号(signal h)存储了第一个数字与第二个数字的异或,然后导致了ModelSim仿真不正确,但是这个好像因电脑而异?以下是fulladder的实现

 

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;

entity fulladder is
port(Enable,A,B,Cin:in std_logic;
	  S,Cout:out std_logic);
end fulladder;

architecture dataflow of fulladder is
begin
	process(Enable,A,B,Cin)
	begin
		if(Enable = '0')then
			Cout <= (A and B) or ((A xor B) and Cin);
			S <= A xor B xor Cin;
		else
			Cout <= '0';
			S <= '0';
		end if;
	end process;
end dataflow;

        随后就可以进行相关的ModelSim的测试了。这里可以使用vwf先行进行仿真,随后用vwf进行相关的testbench生成,随后导入ModelSim即可。(挖个坑,过两天在这里附上ModelSim选择教程)。

        然而我们的要求是使用一个8位二进制加法器,所以对于八位二进制加法器可以在fulladder的基础之上进行级联,随后产生一个八位二进制的ModelSim。这个在之前的操作基础之上进行操作即可,而且不需要添加process,可以直接进行仿真操作。最后出现的ModelSim结果会产生不稳定的尖峰脉冲,在验收时注意远离相关跳变或尖峰脉冲的位置。(挖个坑,验收完毕之后会对八位二进制说的更详细。)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值