首页
>>
论坛
>>技术社区 >>
OpenHW社区论坛
>>
Coregen及ComplexIP
|
我的Digi-Key账户
产品索引
供货商索引
资源
是否需要帮助
中国
我要发帖
|
我要投票
|
我要回复
|
收藏
1
异步双口RAM的综合
版主:
Jerry Fan
Terry_ni
玄剑
XUPteam
Johnpld
精华:
0
积分:
27
等级:
学徒
登陆次数:
3
发表帖子:
2
注册时间:
2007-11-29
最后登陆:
2007-12-30
状态:
离线
查看详细资料
aaaaaaaaaaaaa
积分:27
帖子:2
精华:0
等级:学徒
注册时间:2007-11-29
最后登录:2007-12-30
我的博客
发短消息
我的相册
当前离线
发表于2007-12-30 17:52
1#
异步双口RAM的综合
异步双口RAM的综合
我写了一个异步的FIFO,里面包括一个异步双口RAM,用ModelSim仿真完全正确,但用Synplify综合时(选用Cyclone器件),却把RAM综合成了一大堆的LUT,无论怎么改都没法综合成Cyclone器件内的Block RAM。即使在Synplify里加了约束条件,仍然无济于事。
现在发现问题主要是出在异步时钟上,读和写用同一个时钟能综合成Block RAM,但分别用两个异步的时钟就不行了。
有高手能帮我想想办法吗?谢谢!
另外申明一点:我虽然知道用Quartus做的话,点点鼠标就能拉一个FIFO出来了,但我还是想直接用代码写,而且要能够综合成器件内的Block RAM。
附:我现在试了以下两个代码,都不行
module FIFO1024_MEM (rdata, wdata, waddr, raddr, wclken, wclk);
parameter DATASIZE = 4; // Memory data word width
parameter ADDRSIZE = 8; // Number of memory address bits
parameter DEPTH = 1<<ADDRSIZE; // DEPTH = 2**ADDRSIZE
output[DATASIZE-1:0] rdata;
input [DATASIZE-1:0] wdata;
input [ADDRSIZE-1:0] waddr, raddr;
input wclken, wclk;
reg [DATASIZE-1:0] MEM [0
EPTH-1];
assign rdata = MEM[raddr];
always @ (posedge wclk)
begin
if (wclken)
begin
MEM[waddr] <= wdata;
end
end
endmodule
module FIFO1024_MEM (rdata, wdata, waddr, raddr, wclken, rclken, wclk, rclk);
parameter DATASIZE = 4; // Memory data word width
parameter ADDRSIZE = 8; // Number of memory address bits
parameter DEPTH = 1<<ADDRSIZE; // DEPTH = 2**ADDRSIZE
output[DATASIZE-1:0] rdata;
input [DATASIZE-1:0] wdata;
input [ADDRSIZE-1:0] waddr, raddr;
input wclken, rclken, wclk, rclk;
reg [DATASIZE-1:0] MEM [0
EPTH-1];
reg [DATASIZE-1:0] rdata;
always @ (posedge wclk)
begin
if (wclken)
begin
MEM[waddr] <= wdata;
end
end
always @ (posedge rclk)
begin
if (rclken)
begin
rdata <= MEM[raddr];
end
end
endmodule
相关主题
回复
链接
收藏
Superfpga
精华:
0
积分:
29
等级:
学徒
登陆次数:
3
发表帖子:
9
注册时间:
2007-11-29
最后登陆:
2007-12-30
状态:
离线
查看详细资料
aaaaaaaaaaaaa
积分:29
帖子:9
精华:0
等级:学徒
注册时间:2007-11-29
最后登录:2007-12-30
我的博客
发短消息
我的相册
当前离线
发表于2007-12-30 18:14
2#
RE:异步双口RAM的综合
你把这些代码直接可以用quartusII综合呀,
像这么大块的的话即使不加约束,它也会自动综合在EAB里的。
回复
链接
收藏
balicaomei
精华:
0
积分:
27
等级:
学徒
登陆次数:
3
发表帖子:
7
注册时间:
2007-11-29
最后登陆:
2007-12-30
状态:
离线
查看详细资料
aaaaaaaaaaaaa
积分:27
帖子:7
精华:0
等级:学徒
注册时间:2007-11-29
最后登录:2007-12-30
我的博客
发短消息
我的相册
当前离线
发表于2007-12-30 18:26
3#
RE:异步双口RAM的综合
顶一下,怎么解决呢
回复
链接
收藏
Woshinm
精华:
0
积分:
22
等级:
学徒
登陆次数:
2
发表帖子:
2
注册时间:
2007-11-29
最后登陆:
2007-12-30
状态:
离线
查看详细资料
aaaaaaaaaaaaa
积分:22
帖子:2
精华:0
等级:学徒
注册时间:2007-11-29
最后登录:2007-12-30
我的博客
发短消息
我的相册
当前离线
发表于2007-12-30 18:56
4#
RE:异步双口RAM的综合
While Cyclone devices do not support asynchronous memory,
they do support a pseudo-asynchronous read operation where the output
data is available during the same clock cycle as when the read address is
driven into it.
M4K的RAM支持同步操作,不支持异步操作
回复
链接
收藏
Wuluoji
精华:
0
积分:
21
等级:
学徒
登陆次数:
1
发表帖子:
1
注册时间:
2007-11-29
最后登陆:
2007-12-30
状态:
离线
查看详细资料
aaaaaaaaaaaaa
积分:21
帖子:1
精华:0
等级:学徒
注册时间:2007-11-29
最后登录:2007-12-30
我的博客
发短消息
我的相册
当前离线
发表于2007-12-30 20:00
5#
RE:异步双口RAM的综合
要把ram推入blockrma的时候,语句是越简洁越好。
根据我的经历,两个always语句里(wclken),(rclken)只能出现一个。最主要的是要把那些条件、逻辑等主要写在例化后的bolckram之外来控制。
回复
链接
收藏
Oldmcu
精华:
0
积分:
27
等级:
学徒
登陆次数:
5
发表帖子:
2
注册时间:
2007-11-29
最后登陆:
2007-12-30
状态:
离线
查看详细资料
aaaaaaaaaaaaa
积分:27
帖子:2
精华:0
等级:学徒
注册时间:2007-11-29
最后登录:2007-12-30
我的博客
发短消息
我的相册
当前离线
发表于2007-12-30 21:02
6#
RE:异步双口RAM的综合
只要把if (rclken)去掉就可以了
回复
链接
收藏
Johnpld
精华:
0
积分:
27
等级:
学徒
登陆次数:
3
发表帖子:
2
注册时间:
2007-11-29
最后登陆:
2007-12-30
状态:
离线
查看详细资料
aaaaaaaaaaaaa
积分:27
帖子:2
精华:0
等级:学徒
注册时间:2007-11-29
最后登录:2007-12-30
我的博客
发短消息
我的相册
当前离线
发表于2007-12-30 21:33
7#
RE:异步双口RAM的综合
高手还挺多,原来都藏龙卧虎着潜水呢?!谢了各位
回复
链接
收藏
我要发帖
|
我要投票
|
我要回复
|
收藏
1
您尚未
登录
|
注册
通信成功,数据正在处理中...