微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > verilog 请教!

verilog 请教!

时间:10-02 整理:3721RD 点击:
我是verilog的初学者,最近在编写一些程序。
在用到parameter时有错,但不知是怎么回事,急!
请高手指点:
parameter IDLE=3'b000,A=3'b001,B=3'b010,
WORD_WIDTH=8,HEAD=8'B1010_0101;
reg[3*WORD_WIDTH-1:0]counter;
为什么通过testbesh仿真加到wave中counter为counter【5:0】?
是怎么回事呀?我的用法对吗?
如果只定义一个参数如:
parameter WORD_WIDTH=8;
reg[3*WORD_WIDTH-1:0]counter;
仿真后就是正确的!
到底怎么回事?

那就一个Parameter定义一个参数不就可以了吗,没有必要钻牛角尖,怎么合适怎么用

多谢 多谢!
问题找到了
是因为在testbench中映射端口名时,将多个parameter的值同时引入,导致出错。
xx   DUT #(A,B,IDLE,HEAD,WORD_WIDTH)(.(),.()......);
如果将 ##(A,B,IDLE,HEAD,WORD_WIDTH)去掉,就正确。

最开始学习写verilog的时候,除了语法以外还要注意风格的培养啊

就是就是 风格很重要

风格。好抽象。

风格很重要
风格很重要

回复
小编说的这个错误,我还没有碰到过。不过我在用parameter定义参数是,不会将不同数据类型的参数定义在一个parameter中。小编应该注意代码风格的问题了。

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

网站地图

Top