打印

帮忙解决一个fpga问题---存储器

[复制链接]
2111|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
libaizhihun|  楼主 | 2010-3-14 16:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 libaizhihun 于 2010-3-16 16:07 编辑

我用quartues做了一个memory。原理很简单,并建立了一个仿真文件。可是仿真结果出现了偏差,不知道为什么。
2为地址线,3位数据线,我先分别对4个存储单元赋值,然后对00单元读出,理论值应为111,可仿真结果为01单元值110,想请教一下各位这是为什么。

相关帖子

沙发
libaizhihun|  楼主 | 2010-3-14 16:57 | 只看该作者
这是个简单问题,可是我就是觉得quartues软件有很多异常。

使用特权

评论回复
板凳
libaizhihun|  楼主 | 2010-3-14 17:02 | 只看该作者
这算不算自己给自己灌水。抱歉。
我今年夏天做了一个秒表,也出现了一个说不清的异常。我不知道这次异常是不是我的失误,但那一次我真的找不出什么原因,结果弄得极为抓狂。以后我会发帖上来说说这个事。
我把memory代码贴出来吧。

module MEMORY(addr,wr,clk,datain,dataout);
parameter m=2,n=3;
input [0:m-1] addr;//m位地址线
input wr,clk;
input [0:n-1] datain;
output reg [0:n-1] dataout;//n位数据线
reg [0:n-1] data [0:m-1];

always @(posedge clk)
begin
if(wr) data[addr]=datain;
else  dataout=data[addr];
end

endmodule

使用特权

评论回复
地板
libaizhihun|  楼主 | 2010-3-14 17:14 | 只看该作者
版主说的没错,好冷清啊········

使用特权

评论回复
5
zgl7903| | 2010-3-14 19:49 | 只看该作者
Verilog 位宽的定义是从高到低的 如[7:0]
[m-1:0]
[n-1:0]

使用特权

评论回复
6
libaizhihun|  楼主 | 2010-3-14 20:22 | 只看该作者
说对了。这个错误不是我想犯得。但我看到一本verilog的书,上面的memory案例就是这么写的。
真的很不好意思,问了这么一个低级的错误。
我当时想,书上的这种写法,可能是要定义具有m位地址线的存储器,也就是2的m次方。
真的很感谢。

使用特权

评论回复
7
zlfxia| | 2010-3-14 21:08 | 只看该作者
reg [n-1:0] data [m-1]:0;
据我所知,这个定义在Verilog中是不可以的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

19

帖子

0

粉丝