关于一段实例引用的代码错误问题
时间:10-02
整理:3721RD
点击:
原始资料是参考“华为VERILOG-HDL电路设计指导” PDF文件里最后个同步FIFO的例子 但是自己编写时实例引用报错“Error (10153): Verilog HDL Function Call or Function Declaration error at fifo.v(28): identifier "read_allow" is not a function” 这样一堆 貌似引用RAM出现错误啦
往指教下哪里语法出现错误了 谢谢了啊!
顶层模块定义的是:
module fifo(fifo_rst,clock,read_en,write_en,read_data,write_data,full,empty,fcounter);
parameter data_width = 8;
parameter addr_width = 9;
input fifo_rst;
input clock;
input read_en;
input write_en;
input [data_width-1:0] write_data;
output [data_width-1:0] read_data;
output [addr_width-1:0] fcounter;
output full;
output empty;
reg [data_width-1:0] read_data;
reg full;
reg empty;
reg [addr_width-1:0] fcounter;
reg [addr_width-1:0] read_addr;
reg [addr_width-1:0] write_addr;
wire read_allow =(read_en&&!empty);
wire write_allow =(write_en&&!full);
dualram u_ram(read_clock(clock),
write_clock(clock),
read_allow(read_allow),
write_allow(write_allow),
read_addr(read_addr),
write_addr(write_addr),
read_data(read_data),
write_data(write_data),
);
............................................后面是FIFO的描述
RAM定义的是:
module dualram(read_clock,write_clock,read_allow,write_allow,read_addr,write_addr,read_data,write_data);
parameter dly =1;
parameter ram_width =8;
parameter addr_width =9;
parameter ram_depth =512;
input read_clock;
input write_clock;
input read_allow;
input write_allow;
input [ram_width -1:0] write_data;
input [addr_width -1:0] read_addr;
input [addr_width -1:0] write_addr;
output [ram_width -1:0] read_data;
reg [ram_width -1:0] read_data;
reg [ram_width -1:0] mem [ram_depth -1:0];
往指教下哪里语法出现错误了 谢谢了啊!
顶层模块定义的是:
module fifo(fifo_rst,clock,read_en,write_en,read_data,write_data,full,empty,fcounter);
parameter data_width = 8;
parameter addr_width = 9;
input fifo_rst;
input clock;
input read_en;
input write_en;
input [data_width-1:0] write_data;
output [data_width-1:0] read_data;
output [addr_width-1:0] fcounter;
output full;
output empty;
reg [data_width-1:0] read_data;
reg full;
reg empty;
reg [addr_width-1:0] fcounter;
reg [addr_width-1:0] read_addr;
reg [addr_width-1:0] write_addr;
wire read_allow =(read_en&&!empty);
wire write_allow =(write_en&&!full);
dualram u_ram(read_clock(clock),
write_clock(clock),
read_allow(read_allow),
write_allow(write_allow),
read_addr(read_addr),
write_addr(write_addr),
read_data(read_data),
write_data(write_data),
);
............................................后面是FIFO的描述
RAM定义的是:
module dualram(read_clock,write_clock,read_allow,write_allow,read_addr,write_addr,read_data,write_data);
parameter dly =1;
parameter ram_width =8;
parameter addr_width =9;
parameter ram_depth =512;
input read_clock;
input write_clock;
input read_allow;
input write_allow;
input [ram_width -1:0] write_data;
input [addr_width -1:0] read_addr;
input [addr_width -1:0] write_addr;
output [ram_width -1:0] read_data;
reg [ram_width -1:0] read_data;
reg [ram_width -1:0] mem [ram_depth -1:0];
找本基本的verilog语法书看下,调用模块时,是怎么样调用的.
模块例化的时候语法错误,小编既然已经知道了可能的错误,就自己先试试看了。
例化的时候点去哪了?
wire read_allow =(read_en&&!empty);
把这个分两步实现试试,先定义,然后再进行赋值。
4楼说的对,应该是dualram u_ram(.read_clock(clock),
.write_clock(clock),
.read_allow(read_allow),
.write_allow(write_allow),
. read_addr(read_addr),
. write_addr(write_addr),
. read_data(read_data),
. write_data(write_data),
);
哦哦哦主程序的点我到查书时注意到了也用个小程序测试了下也不行 怪了 原来子模块没注意到哦 惭愧惭愧了 谢谢了啊
顶一下!
解决了,多谢各位
