我目前正在用VHDL构建一个片上网络路由器,以便在FPGA上实现64核2-D MESH网络。每个核心都有自己的路由器,每个路由器有5个端口(北,南,西,东,本地港口与处理单位沟通) 每个端口都有一个输入FIFO和一个OUTPUT FIFO。因此,输入FIFO与下一个目标路由器的outpuf fifo以及该端口的输出fifo与源路由器的输入fifo进行通信。
我的问题是我没有使用有限状态机来控制FIFOS write / read_eneable和FIFO_FULL FIFO_EMPTY信号,我不知道必须使用这些信号才能使路由器工作。
我的FIFO由xilinx CORE Generator及其带有以下信号的同步FIFO生成:输入:时钟,数据输入,read_enable,write_enable。输出:Data_out,fifo_full,fifo_empty,数据包的前6位。最后一个输出用于从FIFO的前6位中取出FIFO,以便用于XY路由块的路由决策。
所以我的问题是我无法理解如何控制FIFO的write / read_enable和fifo_full / empty,以及如何提取6位以便将它们发送到路由块。
提前谢谢。
P.S。如果有任何不清楚的地方,请让我提供进一步的细节。
的 的 __ _ __ _ __ _ __ _ ___ 回答 __ _ __ _ __ < EM> _ __ _ __ _ ____
你好,西蒙!我非常感谢花时间给你答案。
基本上我要处理32字节的数据包。所以我必须找到一种方法将数据包分成flits然后当flits进入FIFO时,前6位将用于路由。这样我就可以模拟随机流量。
一个让你理解的例子。 16核网状网络具有以下坐标:30 31 32 33 20 21 22 23 10 11 12 13 00 01 02 03
所以想象一下,这些2位数字中的每一个都代表一个路由器。 在这种情况下,我们需要4位而不是6位。 因此,4位进入XY路由块。将前2位与坐标的第一位进行比较,将后2位与坐标的第二位进行比较。
因此,如果我们想要从路由器00转到路由器22,则进入路由器00的数据必须面向该路由器的正确输出。因此,如果目的地是22,那么我们首先使用X轴路由,因此迁移将离开东部端口并移动直到它们到达路由器02,然后它们将成为路由器到Y轴以前往路由器22。
我希望你能理解我在说什么!
如果没有,请告诉我!
关于
答案 0 :(得分:2)
我不明白你提到的6位你在做什么。这是输入FIFO的地址,应该写入输出FIFO的数据项吗?如果你澄清我可以更新我的回复。