verilog HDL同址运算 如何实现?
时间:10-02
整理:3721RD
点击:
看了篇论文,关于一个硬件实现的,其中用到 同址运算 ,因为接触verilog没多久,想了半天不知道这个是怎么实现的?我的疑问:1、同址就是相对memory、rom、ram等而言的,那这些东西能做为模块的输出吗?(好像不能吧?)2、举个例子, 假设3个memory,即reg [7:0] mem_a [0:255] ,mem_b [0:255] ,mem_c [0:255]; 对于mem_a 和 mem_b 按对应地址做运算(加减乘除, 异或…… 均可),如何把得到的结果再存到mem_a中,,然后mem_a再和mem_c运算,在放到mem_a中?
说的有点凌乱,总之,就是如何用verilog实现同址运算?
伪码:
@(p clk)
a <= b + c;
@(p clk)
a <= a + c;
兄弟,
1,ram,最好单独作为一个module,
2,现在的ram都是同步ram,结构是 :收入地址数据是按照时钟上升沿锁存的,输出数据是ram的latch,不妨找些资料看看。现在是没有 reg [7:0] mem_a [0:255] ;的ram了。所以同步ram的地址线在ram内部,无法被外部使用。
并且,你的模块没有划分好,地址线外部输出。必须吗?换种解决方案
恩,可用用两个ram构成乒乓式结构
恩,差不多多就是这个意思,我现在的想法是用两个ram构成乒乓式结构,貌似也能完成这样的功能。
