微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 模块实例化遇到点问题,在线等大牛帮助

模块实例化遇到点问题,在线等大牛帮助

时间:10-02 整理:3721RD 点击:

  1. `timescale 1ns / 1ps
  2. `include "D:/Verilog_work/add/Adder_21bits.v"

  3. module add(
  4. //input
  5. ina,inb,inc,
  6. //output
  7. oc,result,choosea,chooseb
  8. );
  9. input [20:0] ina,inb;
  10. input inc ;
  11. output oc;
  12. output [20:0] result,choosea,chooseb;

  13. reg [20:0] result;
  14. reg in_cin = 0 ;

  15. reg [20:0]choosea,chooseb;
  16. wire[20:0]chooseresult;
  17. Adder_21bits add1(.in_a_21bits(choosea),.in_b_21bits(chooseb),
  18. .sum_21bits(chooseresult),.cin(in_cin),.cout(oc));

  19. always @(ina,inb,inc)
  20. begin
  21. if(ina[20] ==0)
  22. begin
  23. choosea = ina;
  24. end
  25. else
  26. begin
  27. choosea = {ina[20],~ina[19:0]+1};
  28. end

  29. if(inb[20] ==0)
  30. begin
  31. chooseb = inb;
  32. end
  33. else
  34. begin
  35. chooseb = {inb[20],~inb[19:0]+1};
  36. end

  37. if(chooseresult[20] ==0)
  38. begin
  39. result = chooseresult;
  40. end
  41. else
  42. begin
  43. result = {chooseresult[20],~chooseresult[19:0]+1};
  44. end

  45. end


  46. endmodule

复制代码



为啥我直接给choosea,chooseb 赋值的时候可以得到正确的结果,这么写就不能了,加法器是正确的已经验证过

把编译的log 发上来。
另外 duv 和 testbench 激励 最好不要放在一个文件里面

    那个log在哪儿看,我用的是modelsim

有个窗口, 不点变化的那个。





    是这个吗

确认算法有问题不 三个都需要在复数时候取反加一么

没有看懂



    chooseresult
这个信号要添加到这个always块的敏感电平列表中。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top