实验资源来自于MOOC-华中科技大学-计算机硬件系统设计
https://www.icourse163.org/course/HUST-1205809816

流水线技术在CPU的设计中已经屡见不鲜。现在我们就来看一个简单的数据传输流水。
流水接口和流水模拟电路在实验文件中都已经设计好了,这里就简单陈述一下。

16位流水接口
流水接口主要就是里面的寄存器,通过多路选择器对数据流的选择,实现清零,寄存,忽略传输的功能。

流水模拟
通过探测器显示,可以观察到数据依次向右传输,与工厂中的流水线相似。
无论选择什么样的编码做法都是相同的,这里只做海明编码流水传输实验。
需求:出现两位错的时候要求数据重传,必须保证接收顺序相同。
实现:
1.让发送端地址回滚。(类似指令流水线分支处理的分支跳转)
2.清空除最后一个外流水接口中的所有数据。(类似指令流水线分支处理的清空误取指令)
3.最后一个流水接口停止接受数据。(类似指令流水线数据处理的流水线暂停)
实现:
1.明显可以发现,当数据传到解码阶段时,发送端的地址和解码位置的地址相差四个位置。
2.使用数据选择器,实现如果回滚,传输回滚地址,否则传入正常地址。
3.回滚地址要分情况,当正常地址小于4,减去4个位置会变为地址末端,所以直接取零。
4.大于4的时候直接让正常地址减4即可,但是为了防止出现某位数据出错,在没有传到解码位置时,又出现两位错,进行倒退的情况。我们将每次处理后得到的回滚地址存入寄存器中,再和做减法后的回滚地址进行比较,如果小于就重传就回滚地址。
eg: 正常数据:华中科技大学是一所国家…… 已接收数据:华中科技大 第一次出错:国->所->一->是->学 重传过程1:学->国->所->一->是 重传过程2:是->学->国->所->一 第二次出错:是->学->国->所->一 重传过程1:技->是->学->国->所 重传过程2:大->技->是->学->国 …… 最后接受数据:华 中 科 技 大 技 大 学 是 一 所 国 家……

地址回滚器
实现:Stall信号高电平有效
1.当出现两位错信号时,需要停止接受数据。
2.出现两位错信号后,还需要继续停止3个时钟周期,新的数据才能传输过来。所以当出现两位错信号后,将计数器加载为3,逆向计数,计数到最大值后停止计数。再将计数器存储的值转为2进制信号。通过或门输出信号,即可实现在除0的时钟周期外,都输出停止信号。

Stall信号控制
将对应信号连接即可。

海明编码流水传输电路
流水模拟

流水传输
