Matlab/Simulink模型自动生成Verilog代码出现的异常现象

 想偷懒用Simulink仿真成功的模型直接生成Verilog代码,但在这世界上偷懒似乎是没有好结果的。

生成的Verilog代码繁多不说,结果也是匪夷所思。后来,我干脆简化到极致:把1*8用Simulink的乘法模块product来实现再生成Verilog代码,simulink模型如下:

结果应该是8。但自动生成的Verilog代码却是:

module mult1009
          (Out1);

  output  [31:0] Out1;  // single

  wire [31:0] Product_out1;  // ufix32
  assign Product_out1 = 32'h41000000;

  assign Out1 = Product_out1;

endmodule  // mult1009

很简单的,没有输入只有输出,但结果却是 32'h41000000。8的二进制形式只有1个1呀,但这个32位的序列中却有41=0100 0001,一共有两个1,百思不得其解。其它的奇葩现象还有:

6转成32'h40c0 0000;2转成32'h4000 0000;4转成2'h4080 0000。Quartus给出的仿真结果都是很大的数。

只有输出0是对的,等于32'h0000。

结论:不偷懒,扎扎实实编Verilog代码实现小数乘法。

期待:高能的看客指出问题,给出意见。在此先道谢了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值