如何实现多输入单输出端口功能

发布: 2017-1-11 19:50 | 作者: sheerlala | 来源: EETOP 赛灵思(Xilinx) 社区

求助各位大神,现在要实现一个功能,就是把多个输入(可能会同时到达)接收进来转换成一个输出,就类似于交换机的功能,想到应该用缓存器,但是具体代码怎么写呢,在做时序仿真的时候很容易出问题,谢谢各位了!
tao2000 (2017-1-12 17:12:20)
一般思路是把每路数据封包缓存,然后再根据仲裁把数据MUX到数据的输出。要考虑数据吞吐的平衡。
飘渺仙 (2017-1-12 18:29:00)
首先,你要确定所有输入的速率之和,小于输出的速率; 其次,由于不同的输入之间会在输出时有一个阻滞关系,你要把这个阻滞关系进行建模; 然后,既然所有输入之间有阻滞关系,那么必须考虑将输入的数据缓存(可以考虑共享缓存);
白脸曹操 (2017-1-12 22:11:23)
谢谢楼上解答!
sheerlala (2017-1-15 13:05:26)
回复 2# tao2000 如果有多路数据同时到达,一般是怎么做缓存的呢?目前只想了这种方法,用ack信号回馈给信号源,使之valid信号无效,没有用缓存,感觉用缓存应该更简单一点,但是不知道怎么做

CODE:

always@(posedge clk) begin if(pcf_valid1&&pcf1[103:96]==pcf_sync_priority) begin pcf_info={pcf1[39:32],pcf1[7:0],pcf1[223:208],local_clock};pcf1_ack=1;end else if(pcf_valid2&&pcf2[103:96]==pcf_sync_priority) begin pcf_info={pcf2[39:32],pcf2[7:0],pcf2[223:208],local_clock};pcf2_ack=1;end else if(pcf_valid3&&pcf3[103:96]==pcf_sync_priority) begin pcf_info={pcf3[39:32],pcf3[7:0],pcf3[223:208],local_clock};pcf3_ack=1;end else if(pcf_valid4&&pcf4[103:96]==pcf_sync_priority) begin pcf_info={pcf4[39:32],pcf4[7:0],pcf4[223:208],local_clock};pcf4_ack=1;end else pcf_info=0; end
sheerlala (2017-1-15 13:06:30)
回复 3# 飘渺仙 同问大神关于我回复二楼的那个问题:loveliness:
飘渺仙 (2017-1-16 13:53:16)
回复 6# sheerlala 亲,别贴代码,不好看的,还是贴你的设计思路框图吧。框图更直观!

网络资源