用FPGA实现数据远距离的高精度传输
距9,纠4错8位数据最高位(9,1)码0对应010101010,1对应101010101,汉明距9,纠4错
表2
第1位第2位第3位第4位第5位第6位第7位最高位00100100101001010010101001010100101010100101010101101101101011010110101011010101101010101101010101
对8个位远逐位编码,8个生成矩阵为1维矢量。因此用FPGA实现编码时,采用查表法更方便,如表2所列。
之所以选用010等作为码字,是因为01相间在组合为帧发送时,可以减少连0或连1的出现概率。
(4)帧结构实现交错发送技术
为纠突发错,码字要按交错格式发送。因此,用帧实现码字的交错,数据发端按帧发送,数据收端按帧解码。8个码字共48位(6字节),加帧头2字节,所以,帧为8字节。为说明帧结构,暂以字母表示码字各位:
码字0:a2a1a0;码字3:d4d3d2ed1d0;
码字1:b2b1b0;码字4:e6e5e4e3e2e1e0;
码字2:c4c3c2c1c0;码字5:f6f5f4f3f2f1f0;
码字6:g8g7g6g5g4g3g2g1g0;
码字7:h8h7h6h5h4h3h2h1h0;
帧结构如表3所列。
图5纠突发错仿真图
利用帧头1和帧头2的重合特点来检测帧头,因为码字交错发送时相邻两字节对应位基本01相间的。由表3可得,第3字节到第8字节,相邻字节至少有6位不相同。因此可借用汉明距的纠错思想,认为帧头1和2不重合的位在2位以内,则表示正确收到帧头。
表3
帧头111010100帧头211010100第3字节a0c0e0f6f0g0g6h0第4字节a1c1e2d0f1g1g7h1第5字节a2c2e2d1f2g2g8h2第6字节b0c3e3d2f3g3h6h3第7字节b1c4e4d3f4g4h7h4第8字节b2e6e5d4f5g5h8h5
3FPGA实现设计
(1)单工条件下的实现
用两块FPGA分别实现编码器和解码器。按前面的编解码原理,编码器接收子站8位信息和1位同步,输出8字节×8位帧结构编码作远程传输,解码器收到帧结构编码,输出8位信息和1位同步给基站。(在实际应用中,子基站两MPU还要加入通常的累加和检错或偶校验检错。因不属编解码内容,不作讨论。)
单工电路原理如图2。
为检验电路设计,假设输入信号为11001010,编码输出的帧结构为表4。
表4
帧头111010100=D4帧头211010100=D4第3字节00000111=07第4字节11111000=FB第5字节00000111=07第6字节11111010=FA第7字节00000101=05第8字节10111010=BA
编码器仿真图如图3。
同步信号clk_in上升沿到来时,编码器读入数据信息11001010,并按内部的波特率clk;在下降沿产生正确的帧格式编码输出(D4、D4、07、FB、07、FA、05、BA)。
解码器的仿真图如图4所示。
当解码器判断收到帧头(两个D4),则将同步信号clk_out置高,再按内部波特率clk在上升沿收6字节的帧结构码字,在同步信号的下降沿输出译码(11001010)。
纠突发错仿真图如图5所示。
当传输过程出现突发错时,第5字节改为FF,第7字节改为00,译码器给出信息11001010。
纠突发错仿真图如图5所示。
当传输过程出现突发错时,第5字节改为FF,第7字节改为00,译码器给出信息11001010。
因为信息最低位的编码能纠1位错,最高位能纠4位错,所以,当第3~5字节、第6~8字节分别出现一个8位的突发错,译码器均能完全纠正。出现多个突发错时,相应的信息低位将出错,
表2
第1位第2位第3位第4位第5位第6位第7位最高位00100100101001010010101001010100101010100101010101101101101011010110101011010101101010101101010101
对8个位远逐位编码,8个生成矩阵为1维矢量。因此用FPGA实现编码时,采用查表法更方便,如表2所列。
之所以选用010等作为码字,是因为01相间在组合为帧发送时,可以减少连0或连1的出现概率。
(4)帧结构实现交错发送技术
为纠突发错,码字要按交错格式发送。因此,用帧实现码字的交错,数据发端按帧发送,数据收端按帧解码。8个码字共48位(6字节),加帧头2字节,所以,帧为8字节。为说明帧结构,暂以字母表示码字各位:
码字0:a2a1a0;码字3:d4d3d2ed1d0;
码字1:b2b1b0;码字4:e6e5e4e3e2e1e0;
码字2:c4c3c2c1c0;码字5:f6f5f4f3f2f1f0;
码字6:g8g7g6g5g4g3g2g1g0;
码字7:h8h7h6h5h4h3h2h1h0;
帧结构如表3所列。
图5纠突发错仿真图
利用帧头1和帧头2的重合特点来检测帧头,因为码字交错发送时相邻两字节对应位基本01相间的。由表3可得,第3字节到第8字节,相邻字节至少有6位不相同。因此可借用汉明距的纠错思想,认为帧头1和2不重合的位在2位以内,则表示正确收到帧头。
表3
帧头111010100帧头211010100第3字节a0c0e0f6f0g0g6h0第4字节a1c1e2d0f1g1g7h1第5字节a2c2e2d1f2g2g8h2第6字节b0c3e3d2f3g3h6h3第7字节b1c4e4d3f4g4h7h4第8字节b2e6e5d4f5g5h8h5
3FPGA实现设计
(1)单工条件下的实现
用两块FPGA分别实现编码器和解码器。按前面的编解码原理,编码器接收子站8位信息和1位同步,输出8字节×8位帧结构编码作远程传输,解码器收到帧结构编码,输出8位信息和1位同步给基站。(在实际应用中,子基站两MPU还要加入通常的累加和检错或偶校验检错。因不属编解码内容,不作讨论。)
单工电路原理如图2。
为检验电路设计,假设输入信号为11001010,编码输出的帧结构为表4。
表4
帧头111010100=D4帧头211010100=D4第3字节00000111=07第4字节11111000=FB第5字节00000111=07第6字节11111010=FA第7字节00000101=05第8字节10111010=BA
编码器仿真图如图3。
同步信号clk_in上升沿到来时,编码器读入数据信息11001010,并按内部的波特率clk;在下降沿产生正确的帧格式编码输出(D4、D4、07、FB、07、FA、05、BA)。
解码器的仿真图如图4所示。
当解码器判断收到帧头(两个D4),则将同步信号clk_out置高,再按内部波特率clk在上升沿收6字节的帧结构码字,在同步信号的下降沿输出译码(11001010)。
纠突发错仿真图如图5所示。
当传输过程出现突发错时,第5字节改为FF,第7字节改为00,译码器给出信息11001010。
纠突发错仿真图如图5所示。
当传输过程出现突发错时,第5字节改为FF,第7字节改为00,译码器给出信息11001010。
因为信息最低位的编码能纠1位错,最高位能纠4位错,所以,当第3~5字节、第6~8字节分别出现一个8位的突发错,译码器均能完全纠正。出现多个突发错时,相应的信息低位将出错,
- 上一篇论文: 基于FPGA的四阶IIR数字滤波器
- 下一篇论文: 用SoC实现视频图形引擎功能的研究