VORC的PE仿真问题之一:乘法器延迟

 问题:使用ModelSim仿真整个VORC(Video Oriented Reconfigurable Coprocessor)时,其结果出错。从仿真波形可以看出三点怪异之处。第一:数据ain和bin相加的结果表明两者是错位相加(即:0+0,1+1而不是0+1,1+2),对照电路图可以找到原因:ain数据存在一个乘法器的延迟时间,这造成ain数据会晚一个节拍参与计算。第二:当数据ain和bin均为0时,乘法器的输出不为0,而是1,查看测试文件中所加的激励以及定义电路功能的操作码,可知:初始化时,将操作码定义为0时,造成mult1的两个输入数据均为1,因此乘法器的输出为1。第三:当数据ain和bin增加到16时,加法出错,如图一黄色竖线所在位置。分析仿真波形可以找出一个原因:MULT1(乘法器1)的结果不正确,也就是说MULT1不能正常工作。导致乘法器不能正确工作的原因推测是乘法器存在延迟。由于初始的代码使用的是纯组合逻辑,因此可能造成时序的混乱。(接下来需要进行验证)

      测试文件的写法是否正确?也就是说,测试文件能不能达到测试的效果?(测试文件确实有问题,最好将输入数据的变化节拍大于时钟周期)

VORC-PE实现加法功能的仿真波形 

图一 VORC加法仿真波形(出现错误)

 

1VRC_MULT(乘法器使用纯组合电路实现)

 用Verilog中的乘号来编写时,使用ModelSim仿真时有延时,这会导致仿真整个VRC结构时,结果出错。

 

代码:

'timescale 1ns/1ns

module mult_8x4 (a, b, y);     

    input [7:0] a;

    input [3:0] b;

    output [11:0] y;

      

    reg [11:0] y;

    reg [7:0] areg;

    reg [3:0] breg;

   

always @ (a or b)  

    begin 

           areg <= a;

           breg <= b;

           y <= areg * breg;

        end  

 

endmodule

 

测试文件

'timescale 1ns/1ns

module mult_8x4_tb ;

  

   reg [7:0] a;

   reg [3:0] b;

   wire [11:0] y;

  

   mult_8x4 dut (a, b, y);

  

   initial

   begin

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值