带有2个VHDL时钟的FIFO

Jor*_*uci 2 clock vhdl fifo clock-synchronization

我有一个vhdl赋值问题.我需要在500MHz的总线和另一个30MHz的总线之间创建一个FIFO缓冲区.

我设计了一个基本的FIFO缓冲区

输入:Data_in,Write_EN,CLK_500,Read_EN,CLK_30,FlushFIFO.

输出:Data_out,FULL,EMPTY.

此缓冲区使用2D数组设计:

type fifo_arr is array (0 to 63) of std_logic_vector(39 downto 0);
signal FIFO : fifo_arr := (others => (others => '0'));
Run Code Online (Sandbox Code Playgroud)

问题如下:我应该如何编写进程并在它们之间维护指针以进行同步?使用我尝试过的方法,代码将不会合成(错误:XST:827信号ptr无法合成)

有任何想法吗?

感谢致敬

Mar*_*son 6

向我们展示它实际上抱怨的代码可能是一个想法!

跨时钟域的FIFO非常棘手,不能轻易尝试......

话虽如此 - 看起来像是家庭作业,可以在这里找到一个好的阅读:

http://eda.ee.nctu.edu.tw/jdhuang/courses/ipcd04/paper/alfke_final.pdf

(其中一位作者是已故的,伟大的彼得·阿尔克克 - 他在1969年设计了第一个FIFO芯片,被广泛认为是一个甚至 FIFO大师)