VORC的PE仿真问题之三:符号判断位选择错误导致电路死锁
来源:互联网 发布:猪八戒淘宝收藏有用吗 编辑:程序博客网 时间:2024/05/05 09:05
VORC-求绝对值的运算功能仿真
仿真环境: ModelSim
源代码: Verilog
问题:仿真VORC的求两数差的绝对值的运算时,仿真出错。从仿真波形可以看出adder2o的值保持不变,导致求绝对值的操作无法进行。
原因:从电路图可以看出,最有可能出现问题的地方是,两数相减后符号位的判断位选择出错。
解决办法:修改电路图和相应的代码,选取正确的符号判断位(先前以adder2o[3]为符号判断位,目前使用adder5o[3]为符号位)。
图一 VORC求两数差的绝对值的运算波形
VORC-求绝对值的仿真出现电路死锁
问题:对VORC的两个8位操作数间的差值的求绝对值时,如果是128-0=128,此时使用原来的电路进行运算,会造成电路的死锁,即不管输入数据如何变化,电路的输出都锁定在128,使得电路无法进行正常工作。
图二 求绝对值电路仿真出现死锁(128-0=128)
原因:设计的电路中以差的最高位(adder5p[3])作为符号位进行判断,若为1,则进行取反加一操作。但是,实际情况是当差值大于或等于128(1000,0000)时,电路会被死锁。
图三 求绝对值电路仿真出现死锁(两数据只差大于或等于128)
解决方法:重新设计一个符号位判断电路(比较器),提前比较输入数据的大小,判断差的符号位。
符号判断比较器的代码:
'timescale 1ns/1ns
module compare_8 (ain, bin, msb);
parameter width = 8;
input [width-1 : 0] ain, bin;
output msb;
reg msb;
always @ (ain or bin)
begin
if (ain < bin)
msb = 1;
else
msb = 0;
end
endmodule
仿真波形:
图四 符号判断器仿真波形
问题已经解决:VORC的求绝对值运算(abs操作)仿真波形正确
图五 VORC的绝对值运算仿真波形
- VORC的PE仿真问题之三:符号判断位选择错误导致电路死锁
- VORC的PE仿真问题之一:乘法器延迟
- VORC的PE仿真问题之二:reg数据类型和寄存器
- 电路仿真软件的选择
- Matlab电路问题的仿真
- 一种三分频电路的实现与仿真
- 证书选择错误导致的真机调试问题
- 全角符号输入导致的编译错误
- 关于waitForCondition导致死锁的问题
- 关于waitForCondition导致死锁的问题
- SendMessage会导致死锁的问题
- ThreadPoolExecutor使用错误导致死锁
- 有符号和无符号导致的问题
- golang 中 锁的错误的用法会导致死锁。
- 电路仿真
- 误用Connection.setAutoCommit导致的数据库死锁问题
- Plugin调用SQL存储过程导致死锁的问题
- 调用TerminateThread终止线程所导致的死锁问题
- 我们的项目
- 重构旧代码的一些体会
- .NET(C#)连接各类数据库代码-集锦
- RGB565和RGB555位图显示
- “软件中国”2008年度获奖作品名单新鲜出炉
- VORC的PE仿真问题之三:符号判断位选择错误导致电路死锁
- 为什么C++里所有类型的变量都一整型输出???请高手帮忙, 谢谢啦!!!!
- SQL 2
- 答qdjdl 问:我在回调函数中想获取参数的值,如何实现?
- 视频捕获软件开发完全教学(作者:不详)
- 2008年网游业收入逾183亿元远超传统三大娱乐业
- Oracle如何快速查找第N条记录?
- [海外生活]人工流产在美国(图)
- 基于视觉的高速寻线机器人设计与实现