在verilog里面,如果同一个信号需要在两个时钟来驱动怎么...
举一个例子,如果对于一个内存模块,如果想实现输入时钟和输出时钟不同步但是与此同时对同一个变量如内存的地址进行操作,应该怎么写?就比如是这样的,输入50M时钟对内存进行读写。同时用25M的时钟把这个信号读出来。因为涉及到具体的时序变化,所以fifo并不是特别的方便。请教有没有比较科学的写法?谢谢了 做两个时钟,写的时候切到50M,读的时候再切回25M gliet_su 发表于 2014-5-11 19:07
做两个时钟,写的时候切到50M,读的时候再切回25M
是这样的,比如,写的时候是wclock,读的时候是rclock,这两个时钟同时对同一个变量address进行操作,但是如果不在同一个always里面不能对同一个变量进行操作啊,这样会产生竞争冒险。能具体的说说思路么? 自己顶一顶 标记一下 cxhy 发表于 2014-5-11 20:55
是这样的,比如,写的时候是wclock,读的时候是rclock,这两个时钟同时对同一个变量address进行操作,但是 ...
对同一地址肯定要用FIFO了。乒乓操作,搜一下,有很多介绍的。 gliet_su 发表于 2014-5-11 21:15
对同一地址肯定要用FIFO了。乒乓操作,搜一下,有很多介绍的。
还是谢谢你 本帖最后由 y595906642 于 2014-5-11 21:33 编辑
你需要的的是双端口ram
xilinx和altera家的FPGA都有对应的ip
直接调用就可以了
一般奇怪的需求都是没有好好琢磨{:3_44:} 八楼不错........ 不错,也有这样的问题 地址也可以两个的,读写地址分开赋值,在always块外面做个选择器就可以了,以此类推。 flyfox8 发表于 2014-5-13 07:15
地址也可以两个的,读写地址分开赋值,在always块外面做个选择器就可以了,以此类推。 ...
这几天没法上论坛,这个问题已经解决了。大致思路和你说的差不多。就是对于例如addr这么一个地址变量。在两个不同的模块里面根据需要各自操作,然后改为addr_1和addr_2。然后在一个新模块里面根据模块的实际情况按照时序情况进行分别操作,分时把这两个变量分别赋值给addr。实际操作难度稍微要大一点,多花了一点时间。还是谢谢兄弟哈。
页:
[1]