【FPGA基础】常见易错点积累

1、# ** Error: …/…/code/Rtl/send_to_lvds_n.v(167): A begin/end block was found with an empty body. This is permitted in SystemVerilog, but not permitted in Verilog. Please look for any stray semicolons.

问题原因:代码中多了一个“;”

2、使用仿真模型时,如果在某个testbench文件中使用到了该模型,则在仿真设置时,一定要把这个model文件和测试台文件放在一起,不然在运行仿真时会报错“无法找到XXX实体”。

3、在模块声明时,input一定为wire型,output可以是wire型也可以是reg,如:

module ex_module(
input wire sclk,
input wire rst_n,
input wire [7:0] d,//声明模块的时候,输入一定是wire变量
output reg [7:0] q//声明模块的时候,输出可以是wire变量也可以是reg;reg变量必须在always块里面赋值
);

编写测试台时,可以发现在模块中声明为input的信号被定义为了reg型,而原模块中声明为output的信号被定义为了wire型,为什么与上述规则相反呢?

module pwm_generator_tb;
reg Clk50M; //50MHz时钟输入
reg Rst_n; //复位输入,低电平复位
reg cnt_en; //计数使能信号
reg [31:0]counter_arr;//输入32位预重装值
reg [31:0]counter_ccr;//输入32位输出比较值
wire o_pwm; //pwm输出信号

此时可以理解为,测试台文件中的输入信号为我们人为添加上去的,是测试台的输出,而原模块的输出信号则作为测试台的输入(先这样理解,如有错误以后再更改),也就是测试台的输入输出设置相对于原模块倒置。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值