EDA编码器译码器设计.doc
文本预览下载声明
VHDL语言的编码器
1.设计原理
1.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 加) 组成的除法电路实现。
该程序流程主要通过输入一组四位信息码组,然后根据编码后的余数输出对编码进行检错判断,若输出余数为000 则无错码。
2.3 程序设计
根据程序流程图编写程序,源程序如下所示:
编码器设计:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY cycle_74 IS
PORT (
datain: IN STD_LOGIC;
clk,clr: IN STD_LOGIC;
tout: out std_logic_vector(6 downto 0)
);
END cycle_74;
ARCHITECTURE arc_cycle OF cycle_74 IS
SIGNAL d0,d1,d2:STD_LOGIC;
signal dataout: std_logic;
signal din: std_logic_vector(6 downto 0);
--signal din: std_logic_vector(6 downto 0):=0000000;
BEGIN
u1:process (clk)
variable g:std_logic;
variable m:integer range 1 to 8;
begin
if (clkevent and clk=1) then
if clr=1 then
g:=0;
m:=1;
dataout=0;
else
if m=8 then
if m=4 then
dataout=datain;
case m is
when 1 = din(6)=dataout;
when 2 = din(6)=dataout;
when 3 = din(5)=dataout;
when 4 = din(4)=dataout;
when 5 = din(3)=dataout;
when 6 = din(2)=dataout;
when 7 = din(1)=dataout;
when 8 = din(0)=dataout;
end case;
g:=datain XOR
显示全部