1引言
循环码是在严密的代数学理论基础上建立起来的,是线性分组码的一种。这种码的编码和解码设备都不太复杂,而且纠错的能力较强。顾名思义,循环码除具有线性码的一般性质之外,还具有循环性,即任一码组循环一位以后,仍为 该码中的一个码组。
在代数编码理论中,为了便于计算,经常将循环码表示成码多项式的形式,设码组为 a= (an-1an-2...a1a0),则码多项式定义如下:
T (X) =an-1x +an-2x +...+a1x+a0 在循环码除全 “ 0”码组外,再没有连续 k 位均为 “ 0”的码组,即连“0”的长度最多只有 (k-1) 位。否则,在经过若干次循环移位后将得到一个 k 位信息位全为“0”,但监督位不全为“0”的一个码组。因此,g (x) 必须是一个常数项不为“0”的 (n-k) 次多项式,而且这个 g (x) 还是这种 码中次数为 (n-k) 的唯一一个多项式。称这唯一的 (n-k) 次多项式g(x)为码的生成多项式。一旦确定了 g (x),则整个 (n,k) 循环码就被确定了。由此,可以写出循环码的生成矩阵 G.
通常这时得到的循环码的生成矩阵不是典型矩阵,可通过线性变换转为典型矩阵,则循环码组可写成:
T (X) = [an-1 an-2 ...an-k] G (X)
G (X) = [an-1 x +an-2 x +...+an- (k-1) x+a ] .g (x)
所有的码组多项式 T (X) 都可被 g (x) 整除,而且任意一个次数不大于 (k-1)的多项式乘 g (x) 都是码多项式,该条性质用于编码,还可用于验证接收码组是否出错。
由于任一循环码多项式 T (X) 都是 g (x) 的倍式,故可写成 T (X) =h (x) .g (x),而g (x) 本身也是一个码组,即有 T'(X) = g (x)。由于 T' (X) 是
一个 (n-k) 次多项式,故xkT' (x)是一个 n 次多项式,在模 xn+1 运算下,也是该编码中的一个许用码组。可以写成x T'(x)=Q(x)+T(x) ,又由于等式左端分子和分母都是 n 次多项式,故 Q (x) =1。因此,上式可化成xkT'(x) =
1
(xn+1) +T (x)。最后,可得到 xn+1=g (x) [xk+h (x)]。由此说明,g (x) 应该是 xn+1 的一个因子。
在本次计中,我使用的系统开发平台为 QuartusⅡ,在QuartusⅡ上可以完成设计输入、元件适配、时序仿真和功能仿真,它提供了一种与结构无关的设计环境,是设计者能方便地进行设计输入、快速处理和器件编程。
在本次设计中,采用的硬件描述语言是VHDL[3](Very-High-Speed Integrated Circuit HardwareDescription Language)。VHDL语言是一种用于电路设计的高级语言。VHDL主要用于描述数字系统的结构、行为、功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。
1.1课程设计目的和要求
提高我们的分析能力及运用QuartusⅡ,懂得自己动手和验证,如系统结构模拟、电路特性分析,灵活的运用VHDL语言。
本课程设计中将一组循环码输入,并且能编码,再纠错,再到解码输出的一个过程。
作为电子专业的学生,通过这次QuartusⅡ方面的课程设计,可以提高我们对QuartusⅡ领域及通信电路设计领域的认识,有利于培养我们在通信电路QuartusⅡ方面的设计能力。一人一题特别有利于锻炼我们独立分析问题和解决问题的能力。设计过程的复杂加老师的严格要求有益于培养我们严谨的工作作风。
2
2 VHDL
2.1 VHDL语言介绍
VHDL 的英文全名是 Very-High-Speed Integrated Circuit Hardware Description Language,诞生于 1982 年。1987 年底,VHDL被 IEEE 和美国国防部确认为标准硬件描述语言。
VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。 2.2 VHDL语言的特点
VHDL 语言能够成为标准化的硬件描述语言并获得广泛应用 , 它自身必然具有很多其他硬件描述语言所不具备的优点。归纳起来 ,VHDL 语言主要具有以下优点:[1]
(1) VHDL 语言功能强大 , 设计方式多样
VHDL 语言具有强大的语言结构, 只需采用简单明确的VHDL语言程序就可以描述十分复杂的硬件电路。同时, 它还具有多层次的电路设计描述功能。此外 ,VHDL 语言能够同时支持同步电路、异步电路和随机电路的设计实现, 这是其他硬件描述语言所不能比拟的。VHDL 语言设计方法灵活多样 , 既支持自顶向下的设计方式, 也支持自底向上的设计方法; 既支持模块化设计方法, 也支持层次化设计方法。 (2) VHDL 语言具有强大的硬件描述能力
VHDL 语言具有多层次的电路设计描述功能,既可描述系统级电路 ,
3
也可以描述门级电路;描述方式既可以采用行为描述、寄存器传输描述或者结构描述,也可以采用三者的混合描述方式。同时,VHDL 语言也支持惯性延迟和传输延迟,这样可以准确地建立硬件电路的模型。VHDL 语言的强大描述能力还体现在它具有丰富的数据类型。VHDL 语言既支持标准定义的数据类型,也支持用户定义的数据类型,这样便会给硬件描述带来较大的自由度。
(3) VHDL 语言具有很强的移植能力
VHDL 语言很强的移植能力主要体现在: 对于同一个硬件电路的 VHDL 语言描述 , 它可以从一个模拟器移植到另一个模拟器上、从一个综合器移植到另一个综合器上或者从一个工作平台移植到另一个工作平台上去执行。
(4) VHDL 语言的设计描述与器件无关
采用 VHDL 语言描述硬件电路时, 设计人员并不需要首先考虑选择进行设计的器件。这样做的好处是可以使设计人员集中精力进行电路设计的优化, 而不需要考虑其他的问题。当硬件电路的设计描述完成以后 ,VHDL 语言允许采用多种不同的器件结构来实现。 (5) VHDL 语言程序易于共享和复用
VHDL 语言采用基于库 ( library) 的设计方法。在设计过程中 , 设计人员可以建立各种可再次利用的模块 , 一个大规模的硬件电路的设计不可能从门级电路开始一步步地进行设计 , 而是一些模块的累加。这些模块可以预先设计或者使用以前设计中的存档模块, 将这些模块存放在库中 , 就可以在以后的设计中进行复用。
由于 VHDL 语言是一种描述、模拟、综合、优化和布线的标准硬件描述语言 , 因此它可以使设计成果在设计人员之间方便地进行交流和共享, 从而减小硬件电路设计的工作量, 缩短开发周期。
4
3 设计原理
3.1编码器的设计
VHDL 是一种行为描述语言,其编程结构类似于计算机中的 C 语言,在描述复杂逻辑设计时,非常简洁,具有很强的逻辑描述和仿真能力,是未来硬件设计语言的主流。在本设计中,应用 VHDL 语言,在 Altera 公司的Quartus II 7.2 软件环境下,按照自顶而下的设计方法,对编译码器进行设计仿真。根据给定的 (n,k) 值选定生成多项式 g (x),即从 xn+1 的因子中选一个 (n-k) 次多项式作为,假设给定信息码组为 m (x)= (mk-1,mk-2...m0),其次数小于 k,则xn-km (x) 的次数必定小于n。用 g (x) 除xn-km (x),得到余式 r (x),r (x) 的次数必定小于 g (x) 的次数,即小于 (n-k)。将此余式 r (x) 加于信息位之后作为监督位,即 r (x) 和xn-km (x) 相加,得到多项式必定是一个码组多项式。因为它必定能被 g (x) 整除,且商的次数不大于 (k-1)。
根据以上原理,循环码的编码步骤可以归纳如下:
(1) 用xn-k 乘信息码 m (x),这一运算实际上是在信息码后附加上 (n-k)个“0”。
(2) 用 g (x) 除xn-km (x),得到商 Q (X), (3) 编出的码组 T (x) =xn-km (x) +r (x)。
由此可见,编码的核心是如何确定余式 r (x),找到 r (x)后,可直接将其所代表的编码位附加到信息位之后,完成编码。编码电路可采用 (n-k) 级反馈移位寄存器和异或门 (模2 加) 组成的除法电路实现。以生成矩阵 g (x) =x3+x+1 生成 (7,4) 循环码的编码器为例,其除法电路如图3. 1 所示。
图3.1 除法电路图
此移位寄存器的个数与 g (x) 的次数相等,并且 g (x) 的系数 1 表示有
5
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库CRC校验码系统的设计(2)在线全文阅读。
相关推荐: