原创 FPGA研发之道(22)-交换矩阵

2014-8-2 17:45 2863 8 10 分类: FPGA/CPLD 文集: FPGA研发之道

 如果在FPGA设计中,需要多端口,大数据量的交换,那么交换矩阵则是一个不错的实现方案。交换矩阵使用的目的主要有几个,一,灵活的端口转发。通过交换矩阵灵活实现数据流的灵活交换,减少外部负责控制。 二,高效的转发效率,交换矩阵能够实现通常单一总线不能达到的转发效率,满足高吞吐量的系统的需要。三,系统设计以交换矩阵为中心,便于IP集成和模块复用。

交换矩阵的实现方案较为复杂,最早的交换沿袭了共享总线式的架构,因此对于某个端口需要传输,则其他端口只能阻塞,等待总线空闲后再进行传输。而交换矩阵则是一个全互联的结构。如下图所示,如有4个输入,4个输出的交换矩阵,可认为是一个4端口的交换单元,每个端口包含一个发送接口和一个接收模块,如端口0就包含发送模块m0和接收模块s0

20140802174427675.jpg

假设每路传输的速率为N,则整个交换矩阵的传输速率为4N。如何实现一个简单的交换矩阵。首先可以将整速率个设计分割。将整个设计分割为接受和发送两个模块。整个交换单元可以划分为四个部分,分别是,发送模块,仲裁模块,交换模块,接收模块。

(1)               发送模块,首先根据某端口接收数据后,根据该数据帧要转发的端口,发起请求信号。

(2)               仲裁模块:根据请求信号,接收模块的忙闲状态,及各发送模块的优先级,确定当前的响应信号,如果当前的接收模块忙(上次传输未完成),则需要阻塞,等待上次传输完成(复杂的设计,可以保证高优先级能够打断当前传输,直接传输高优先级数据流,高优先级完成后,再恢复原有传输,但这种方式设计较为复杂,仿真验证的难度也较大,不建议使用)。

(3)               交换模块:根据仲裁信号确定发送模块转发的端口,交换模块本质上是多选一的MUX,而MUX的选择信号,则是由仲裁模块来进行选择。

(4)               接收模块:接收交换模块交换后的数据流,向仲裁模块返回当前模块的忙闲状态(正在接收传输信号,为忙状态,而当前无传输状态,则为闲状态)。

仲裁模块的仲裁机制,一般可以使用简单的round-robin的设计,即轮流最高优先级。也可以通过设计带加权的优先级,保证更高优先级的端口优先进行传输。

仲裁模块的仲裁设计可以分为多种,一种是整个交换矩阵使用同一个仲裁单元,每个发送模块只使用一个请求信号及请求端口号连接到仲裁模块。这种设计对整个仲裁模块设计难度较大。另一种设计,如下图所示,即每个接收单元,配置一个仲裁模块,和一个交换模块。而每个发送模块根据要发送的端口,使用多个发送的请求信号。此种设计便于系统扩展,也可简化设计。

20140802174511712.jpg

    不仅是用于高速多端口转发的数据流传输采用交换矩阵。现在,大多高速总线机制(如N主设备,M从设备之间进行数据的交换)也采用类似交换矩阵式的结构,每个从设备的连接都是多个主设备通过MUX来进行连接,这样保证多个主设备访问不同从设备时,可以实现并行的数据交换(如主设备M0访问从设备S1,主设备M1访问从设备S2,可以同时进行总线操作)。这是单一竞争式总线所不能达到的优势,但是,设计占用的逻辑量也会增加。性能的增加带来的负面影响通常就是逻辑的增加。

交换矩阵通常在基于数据包转发的FPGA设计应用中,交换矩阵的交换灵活性增加,也会增加设计复杂度,如果对于传输效率不需太多的需求,可以采用系统复用的方式(前文介绍),通过一个复用模块轮流接收各个发送端口的数据流,,再根据端口转发到各个从设备中,此种方式设计简单,但是此复用模块则会成为系统的瓶颈。根据系统的设计需求,选择适合的设计,达到性能和逻辑方面的平衡,是体现FPGA设计艺术之一。

 

文章评论2条评论)

登录后参与讨论

用户377235 2014-11-17 13:38

博主这个系列写的很好,很有帮助,不知还会不会连载下去,刚看到9月份之后博主就不再连载了,是打算要出书吗

用户380987 2014-8-23 17:57

非常不错 的设计思想,见识了
相关推荐阅读
阿昏豆 2015-11-21 23:25
把大象关冰箱的步骤 --- NAND FLASH控制器磨损管理算法芯片化硬实现
把大象关冰箱的步骤 --- NAND FLASH控制器磨损管理算法芯片化硬实现   目前,存储领域包括eMMC,SATA SSD ,PCIe SSD等控制器是一个非常热门的领域。通常,由于...
阿昏豆 2015-11-09 22:25
平行宇宙的追逐--异步FIFO控制器的设计
  平行宇宙的追逐--异步FIFO控制器的设计。    在逻辑设计中,通常会用到异步FIFO,异步FIFO控制器是经典的异步信号传输的范例,通过FIFO控制器与异步双端口RAM的组合实现数据的...
阿昏豆 2014-08-23 23:36
FPGA研发之道(25)-管脚
     管脚是FPGA重要的资源之一,FPGA的管脚分别包括,电源管脚,普通I/O,配置管脚,时钟专用输入管脚GCLK等。 (1)电源管脚:    通常来说: FPGA内部的电压包括...
阿昏豆 2014-08-10 22:22
FPGA研发之道(24)-控制(下)
   首先依次回答上篇提出的几个问题:       第一个问题:如何避免状态机产生lacth 示例如下,通过在always(*)语句块中,添加默认赋值,ns_state = cs_state; alw...
阿昏豆 2014-08-07 21:53
FPGA研发之道(23)-控制(上)
本质上说,FPGA的模块设计就是将输入转化成想要得到的输出结果。而除了某些简单模块,即在当拍内完成,即将输入进行逻辑操作后,再输出。(如简单加法器等)。其余大部分的设计需要通过时序逻辑和组合逻辑混合实...
阿昏豆 2014-08-06 23:12
FPGA研发之道(23)-控制(上)
本质上说,FPGA的模块设计就是将输入转化成想要得到的输出结果。而除了某些简单模块,即在当拍内完成,即将输入进行逻辑操作后,再输出。(如简单加法器等)。其余大部分的设计需要通过时序逻辑和组合逻辑混合实...
我要评论
2
8
关闭 站长推荐上一条 /2 下一条