16位的奇偶校验器设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计报告

学生姓名学号

班级电子信息工程

院系信院电子系

题目16位的奇偶校验器设计

指导教师

2012 年 5 月

题目一:设计一个16位的奇偶校验器,并仿真验证其功能。(1班1组)

(要求:输入一个16位的矢量数值,统计矢量中“1”的个数;并判断16位数中1的个数的奇偶性)

1、设计思路

2、VHDL程序(或原理图)

3、仿真波形(图片)

4、程序分析

1,设计思路如下:

可以使用FOR_LOOP语句,语法格式如下:

[LOOP标号: ] FOR 循环变量,IN 循环次数范围LOOP

顺序语句

END LOOP [LOOP标号];

FOR后的“循环变量”是一个临时变量,属LOOP语句的局部变量,不必事先定义。

“循环次数范围”规定LOOP语句中的顺序语句被执行的次数。循环变量从循环次数数范围的初值开始,每执行完一次顺序语句后递增1,直至达到循环次数范围指定的最大值。

其中定义输入端口十六位的数据总线为a, 输出端口y将其奇偶校验的结果输出, 输出端c统计1 的个数

2,VHDL程序如下:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY parity_check IS

PORT (a:IN STD_LOGIC_VECTOR (15 DOWNTO 0); y:OUT STD_LOGIC;

c:out integer range 0 to 16);

END parity_check;

ARCHITECTURE arch OF parity_check IS

BEGIN

PROCESS(a)

V ARIABLE temp:STD_LOGIC;

V ARIABLE m: INTEGER RANGE 0 TO 16; BEGIN

temp:='0';

m:=0; --偶校验初始值设为0,奇校验初始值设为1 FOR i IN 0 TO 15 LOOP

temp:=temp XOR a(i);

IF (a(i)='1') THEN m:=m+1;

END IF;

END LOOP;

y<=temp;

c<=m;

END PROCESS;

END arch;

原理图如下:

3,仿真波形如下:

程序分析

实体:

实体名parity_check

输入端口十六位的数据总线a:IN STD_LOGIC_VECTOR (15 DOWNTO 0)

输出端口y:OUT STD_LOGIC;将其奇偶校验的结果输出

若为奇数个1 输出为高电平;若为偶数个1输出为低电平

输出端c:out integer range 0 to 16)统计1 的个数

结构体:

结构体名arch

在进程PROCESS(a)中定义变量

V ARIABLE temp:STD_LOGIC;

V ARIABLE m: INTEGER RANGE 0 TO 16; 并进行变量的赋值

temp:='0';

m:=0;

loop循环

FOR i IN 0 TO 15 LOOP

temp:=temp XOR a(i);

IF (a(i)='1') THEN m:=m+1;

END IF;

END LOOP;

Temp与a(i)异或将其结果赋给temp

If语句

若a(i)为1 m加1计数

将其m的计数结果赋给c c 即为a中1 的个数

相关文档
最新文档