微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 用FPGA读写SDRAM的时候,如何隔离数据输入和SDRAM输出?

用FPGA读写SDRAM的时候,如何隔离数据输入和SDRAM输出?

时间:10-02 整理:3721RD 点击:

我在FPGA里面写了一个模块A,它的输出端口Dout连接到外部SDRAM芯片的数据线DQ上,负责往SDRAM里面写数据。
还写了一个模块B,也在FPGA里面,它的输入端口Din也连接到SDRAM的DQ上,负责从SDRAM里面读数据。
现在的问题是,当Din从SDRAM里面读数据的时候,Dout也在输出数据,虽然这时的数据是无效的,但是它和SDRAM的引脚DQ出来的数据造成冲突了
(我本来想在Dout和Din之间加一个三态门,但是发现FPGA内部没有三态门)
请问这里该怎么设计啊?

FPGA内部是可以设计三态的。
如果你用的是xilinx的fpga,那只要用个IOBUF就可以了,你可以查下ise的user's manual。
如果是altera的,那三态逻辑要自己写。端口定义成inout就可以了

我是用的Alterla的 CycloneII ,不是xilinx。我确定CycloneII 内部是没法产生高阻态的(管脚可以)
我最开始的做法就是在Dout和Din之间加一个三态门,但是下载到器件上才发现,这个三态门被综合成了锁存器
当时的写法是这样的:
assign tri_out=sel? Dout : 16'hz;
然而,当sel变为低电平的时候,tri_out输出的不是高阻态,而是锁存住了Dout的值

altera的是锁存器。 确实是没有高阻态的。 你这个是什么SDRAM? DDR2? 不是应该有命令控制的嘛。 根据前面发的命令就知道后面的DQ线上出的数据该是读回的、还是写入的了。  不了解你的设计具体情况啊。

双向数据传输都是通过管脚实现的。你的dram controller就应该有这样的逻辑。读写不会同时工作的。

我这个是 SDR SDRAM。
是有命令控制DQ上的数据是读还是写,但是问题和DQ无关,因为我需要阻断的是内部的信号DOUT,在DQ输出的时候,它也在输出,那接受数据的DIN到底是接受哪一个?是DQ还是DOUT?因为它们是连在一起的,不能分开。如果分开了,就不能给DQ写数据。最好的办法就是用三态门产生高阻,但是现在没有三态门

读写是不会同时工作
我重新描述一下问题:现在有三根线,Dout写,Din读,DQ读写复用,它们是连在一起的,写SDRAM的时候,DQ是读,数据从DOUT到DQ和Din,这没问题。(注意现在是一个写接两个读,是不会出现错误的)
读SDRAM的时候,问题就来了,DQ变成了写,那现在DQ和Dout都是写,两个写连在一起了,导致Din不知道接受的是什么数据
(现在是两个写接一个读,出错误了)
如果能用三态门将其中一个写(即Dout)阻断,就没问题了,但是现在又没有三态门,因为Dout是一个内部逻辑。
如果SDRAM的读写线是分开的,就没问题了。我觉得只要是使用读写复用的器件,都会遇到这个问题的。

你参考参考这个? DQ_data接你的DQ。
---------------------------------------------------------------
input   oe;
input   clk;
input   [7:0] Dout;
output  [7:0] Din;
inout   [7:0] DQ_data;
reg     [7:0] a;
reg     [7:0] b;
assign DQ = oe ? a : 8'bZ ;
assign Din  = b;
// Always Construct
always @ (posedge clk)
begin
    b <= DQ_data;
    a <= Dout;
end
-------------------------------------------------------


我不是很理解,感觉你接反了。请参考你楼下的代码。

FPGA 要設計成 Tri-State(FPGA.DQ) 與 SDRAM.DQ相連.
DQ後會分成  DQ_out, DQ_in, DQ_Tri.

我在河畔上看到过你问的问题,哈哈

inout wire [7:0] DBUS
assign DBUS = DOUT_EN ? DOUT : 8'hzz;
assign DIN   = DBUS;
这样的写法分配在FPGA的I/O管脚应该是没有问题的

没有三态门,怎么可能实现双工?一片FPGA里肯定是有三态门的资源,小编要仔细看datasheet,看看如何调用。

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

网站地图

Top