微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 关于一段实例引用的代码错误问题

关于一段实例引用的代码错误问题

时间: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];

找本基本的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),
              );

哦哦哦主程序的点我到查书时注意到了也用个小程序测试了下也不行 怪了 原来子模块没注意到哦 惭愧惭愧了 谢谢了啊

顶一下!

解决了,多谢各位

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

网站地图

Top