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

请教一个寄存器组的问题

时间:10-02 整理:3721RD 点击:
请教个问题 我定义了一块寄存器组
reg [31:0] buffer [3:0];
wk都是8位的
想在同一个clk写数据
always @(posedge clk)buffer[3] <= #1 {wk0, wk1, wk2, wk3};
always @(posedge clk)buffer[2] <= #1 {wk4, wk5, wk6, wk7};
可不可以?
功能仿真没有问题,但是综合提示有错
同时读几块数据是可以的?

可仿真的代码和可综合的代码是有区别的
带指定延时时间的代码,综合器是无法在硬件中去对应具体器件和线路,所以无法综合吧

回复 #2 fqing 的帖子
好像不是延时的问题
主要时能不能在同一个时钟延写多块数据
问题是可以同时读多块数据,但是不能同时写数据?

通常来说,可综合的代码是不会那样带具体延时的,我没用过那样的综合器.
那就把你综合的错误提示贴上来,就一目了然了!~

如果不考虑时延的信息,应该是没有问题的吧

错误提示
Available block RAM resources offer a maximum of two write ports. You are apparently describing a RAM with 2 separae write ports for signal <buffer>.

Available block RAM resources offer a maximum of two write ports. You are apparently describing a RAM with 2 separae write ports for signal <buffer>.
综合器把buffer当成了RAM,而你的代码里,在两个always里同时对buffer进行了操作,相当于该RAM有两个独立的写端口;而现成的RAM模块不支持两个独立的写端口;
应该如此吧

不能在两个不同的行为描述中对统一寄存器变量赋值
试试
always @(posedge clk)
begin
buffer[3] <= #1 {wk0, wk1, wk2, wk3};
buffer[2] <= #1 {wk4, wk5, wk6, wk7};
end

就是写端口的问题
两个always下都写就产生问题了
autumanloo的方法解决
由于新手,对一些逻辑电路还很不熟悉
以后请大家多多指教

嗯 。学习啦。

小编用的是FPGA综合工具么?

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

网站地图

Top