各位高手,请教谁做过8路E1转换为1路16M数据流的fpga方案?
可是发现因为8路E1的不同步,还有输入时钟和输出时钟的不同步,导致了我的迷惑
想设计一个fifo,或者双口ram
可是怎么避免读写不同时对一个地址空间操作呢?
各位高手,请教谁做过8路E1转换为1路16M数据流的fpga方案?
我没做过E1,但是按你所说,应该采用一个异步FIFO来实现,如果你用的事XILINX的FPGA,直接采用CORE GENRATER 来产生一个,使用很简单,完全可以满足你的要求。
各位高手,请教谁做过8路E1转换为1路16M数据流的fpga方案?
jackzhang,你的金口真是难开啊
从21ic,到你的论坛ip,最后终于到了cpld设计,
你才终于开口回答我的问题啊!
:)
我用的altera的。用lpm-fifo实现一个异步fifo也挺容易的,
但是就是关于“可是怎么避免读写不同时对一个地址空间操作呢?”
因为fifo的读控制和写控制都是外部电路给的信号,读控制有效时必须读,
写控制有效时必须写,那怎么避免发生冲突呢?
各位高手,请教谁做过8路E1转换为1路16M数据流的fpga方案?
异步fifo的设计,已经避免了这种冲突的发生。如果觉得不可靠,你可以采用pingpong FIFO来做
我没有用过altera fpga,所以不知道你的那个异步fifo是什么样的,这里也有很多altera的高手,他们看到了会回答你的。
各位高手,请教谁做过8路E1转换为1路16M数据流的fpga方案?
pingpong FIFO 是什么东西?
各位高手,请教谁做过8路E1转换为1路16M数据流的fpga方案?
ALTERA得好像禁止读写同时对一地址的操作
各位高手,请教谁做过8路E1转换为1路16M数据流的fpga方案?
写错了,应该是乒乓fifo
各位高手,请教谁做过8路E1转换为1路16M数据流的fpga方案?
如果用双口ram做,从逻辑上讲,sram也是当成fifo用。什么时候才会发生读写统一地址的情况?(1)FIFO空的情况;(2)FIFO满的情况。即FIFO的上溢和下溢,这实际是一种出错的情况,在正常的操作过程中是不会出现的!一旦出现了这种情况,你的代码应该进入错误保护状态,并应该让其他模块感知这种状态以便进行相应的错误处理。如果用coregen产生的FIFO做,实际上core已经处理了这种错误情况,如果FIFO空的时候你去读FIFO,在core的外部看上去fifo_read_ena是有效的,但core内部ram的读使能是无效的,ram_read_ena = fifo_read_ena & fifo_empty_b。
在纯同步ram应用中,我的一般处理是一旦发现同时读写同一个地址,就或者延时写操作或者延时读操作。
不知这种分析是否与你的实际应用环境相符?
各位高手,请教谁做过8路E1转换为1路16M数据流的fpga方案?
像你所说的8路异步的E1复接到一起,我觉得该是使用码速调整!异步的E1就算是使用FIFO也不可能复接到一个16M中去,你看看孙玉写的《数字复接技术》就明白了!
各位高手,请教谁做过8路E1转换为1路16M数据流的fpga方案?
给一个思路,用8个D触发器琐存8路E1数据,每个触发器的时钟使用其对应的E1时钟,同时用一个高频时钟如32M,同步8路E1的时钟,用高频时钟驱动的逻辑循环扫描8路E1时钟,发现该时钟处于低电平则将对应触发器中的数据打进FiFO中,扫描完一遍后,等待,同步后的E1时钟变为高电平后,上述操作又可以重复,FIFO的另一端以16M的时钟将数据取出,发送,即可
同意思guolh的观点
younghot做的应该是一个典型的异步复接系统,而不是并串转换的问题。
请问younghot你的16M数据流有没有定义帧结构,如果没有接收端怎么样分接?
如果是异步复接你是需要码速调整的,我以前用的是弹性存储器实现的,其实一个简单的RAM也可以实现,你要比较读写指针的位置,来判断是否要进行码速调整,这样也避免了对同一地址同时读写的可能性。
先存FIFO再做码速调整。
