概述
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输出信号
此时可以理解为,测试台文件中的输入信号为我们人为添加上去的,是测试台的输出,而原模块的输出信号则作为测试台的输入(先这样理解,如有错误以后再更改),也就是测试台的输入输出设置相对于原模块倒置。
最后
以上就是美满黑米为你收集整理的【FPGA基础】常见易错点积累的全部内容,希望文章能够帮你解决【FPGA基础】常见易错点积累所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复