明海码生成与校验电路的设计.docx
《明海码生成与校验电路的设计.docx》由会员分享,可在线阅读,更多相关《明海码生成与校验电路的设计.docx(26页珍藏版)》请在冰豆网上搜索。
明海码生成与校验电路的设计
目录
第1章总体设计方案1
1.1设计原理1
1.2设计思路2
1.3设计环境4
第2章详细设计方案5
2.1顶层方案图的设计与实现5
2.1.1创建顶层图形设计文件5
2.1.2器件的选择与引脚锁定6
2.1.3编译、综合、适配7
2.2功能模块的设计与实现7
2.2.1取补模块的设计与实现7
2.2.2选择器模块的设计与实现10
2.2.3乘数补码移位寄存器模块的设计与实现13
2.2.4部分积移位寄存器模块的设计与实现15
2.2.5加法器模块的设计与实现17
2.3仿真调试17
第3章编程下载与硬件测试20
3.1编程下载20
3.2硬件测试及结果分析20
参考文献22
附录(电路原理图)23
第1章总体设计方案
1.1设计原理
海明校验码是由理查得·海明(RichardHanmming)于1950年提出的,它不仅具有检测错误的能力,同时还具有给出错误所在的准确位置的能力,这在通信领域有着很广泛的应用。
海明校验码是在数据中加入几个校验位,并把数据的每一个二进制位分配在几个奇偶校验组中。
当某一位出错后,就会引起有关的几个校验组的值发生变化,这不但可以发现出错,还能指出是哪一位出错,为自动纠错提供了证据。
海明码能检测出2位错误,并能纠正1位错误。
(1)数据位和校验位的关系
假设校验位的个数为r,则它能表示2r个信息,用其中的一个信息指出“没有错误”,其余的2r-1个信息指出错误发生在哪一位。
然而错误也可能发生在校验位,因此只有k=2r-1-r个信息能用于纠正被传送数据的位数,也就是说要满足关系:
2r>=k+r+1 (发现一位错)
2r-1>=k+r(发现与自动校正一位错,并发现两位错)
数据位与校验位的对应关系
K值
最小的r值
1~4
5~11
12~26
27~57
58~120
4
5
6
7
8
(2)海明码的编码规律
若海明码的最高位号为m,最低位号为1,即HmHm-1…H2H1,则海明码的编码规律通常是:
a.校验位与数据位之和为m,每个校验位Pi在海明码中被分在 2i-1的位置,其余各位为数据位,并按从低向高逐位依次排列的关系分配各数据位。
b.海明码的每一位Hi(包含数据位和校验位本身)由多个校验位校验,其关系是被校验的每一位位号要等于校验它的各校验位的位号之和。
这样安排的目的,是希望校验的结果能正确反映出出错位的位号。
1.2设计思路
(一)海明码的生成:
因为要求的是8位的二进制数据,所以此处的k为8,按照数据位和校验位的对应关系,r应为5,由于总校验位只是检测两位出错还是一位出错,因此设计时不必考虑它的值,设r为4,故海明码的总位数为12,可表示为:
H12——H1,4个校验位P4~P1对应的海明码位号分别为:
H8/H4/H2/H1,则有如下排列关系:
D8D7D6D5P4D4D3D2P3D1P2P1
按照海明码的原理得出如下的表格:
海明码位号
数据位/校验位
参与校验的校验位位号
被校验位的海明码位号=校验位位号之和
H1
P1
1
1=1
H2
P2
2
2=2
H3
D1
1,2
3=1+2
H4
P3
4
4=4
H5
D2
1,4
5=1+4
H6
D3
2,4
6=2+4
H7
D4
1,2,4
7=1+2+4
H8
P4
8
8=8
H9
D5
1,8
9=1+8
H10
D6
2,8
10=2+8
H11
D7
1,2,8
11=1+2+8
H12
D8
4,8
12=4+8
P1=D1⊕D2⊕D4⊕D5⊕D7
P2=D1⊕D3⊕D4⊕D6⊕D7
P3=D2⊕D3⊕D4⊕D8
P4=D5⊕D6⊕D7⊕D8
(二)海明码的校验:
海明码校验函数(S函数)及校验过程 <偶校验>
S1=P1⊕D1⊕D2⊕D4⊕D5⊕D7
S2=P2⊕D1⊕D3⊕D4⊕D6⊕D7
S3=P3⊕D2⊕D3⊕D4⊕D8
S4=P4⊕D5⊕D6⊕D7⊕D8
课程设计的要求为:
(1)采用自上而下的设计方法,顶层设计使用原理图设计输入方式;底层设计输入方式自行选定;
(2)课程设计的电路主要应包括:
寄存器·P函数发生器和门电路等。
其中控制信号可选用外部开关或VHDL语言以控制器方式实现,其他部分可以调用系统资源库中的器件;
(3)数据位数由指导老师指定;
(4)对设计电路进行仿真并验证其正确性,仿真数据由指导老师给出;
(5)实现编程下载和硬件测试;
(6)独立设计·调试·仿真·下载和硬件测试并通过指导老师现场验收;
(7)撰写课程实验报告。
课程设计的思路为:
海明码的生成有着规律,通过其规律找出相同点
1.3设计环境
(1)硬件环境
•伟福COP2000型计算机组成原理实验仪
COP2000计算机组成原理实验系统由………
•COP2000集成调试软件
COP2000集成开发环境是为………….
(2)EDA环境
•Xilinxfoundationf3.1设计软件
图1.1Xilinxfoundationf3.1设计平台
Xilinxfoundationf3.1是Xilinx公司主要的可编程器件开发工具,它可用来开发Xilinx公司的Spar-tan?
Virtex?
XC3000?
XC4000?
XC5200系列的FPGA芯片和XC9500系列的CPLD芯片。
该平台功能强大,主要用于百万逻辑门级的设计和1Gb/s的高速通信内核的设计。
利用该系统可完成从设计构想到比特流下载的全部过程。
该平台以工程管理器为主界面,同时集成了Xilinx公司以及其他公司的一些优秀软件。
第2章详细设计方案
2.1顶层方案图的设计与实现
顶层方案图是………….
2.1.1创建顶层图形设计文件
顶层图形文件的设计实体……………….顶层图形文件结构如图2.1所示:
图2.1顶层图形文件结构图
2.1.2器件的选择与引脚锁定
(1)器件的选择
由于硬件……………
(2)引脚锁定
把顶层图形文件中的………………对应关系如表2.1所示:
图形文件中的输入/输出信号
XCV200芯片引脚信号
GRD
P50
ZCLOCK
P213
FJW
P47
CLR
P49
VCC
P48
S1
P80
S2
P81
S3
P82
S4
P84
S5
P85
S6
P86
S7
P87
Y1
P95
Y2
P96
Y3
P97
Y4
P100
Y5
P101
Y6
P102
Y7
P103
E0
P63
E1
P73
E2
P72
E3
P71
E4
P70
E5
P66
E6
P65
E7
P64
表2.1信号和芯片引脚对应关系
2.1.3编译、综合、适配
利用Xilinxfoundationf3.1的原理图编辑器…………
2.2功能模块的设计与实现
功能模块主要…………..
2.2.1取补模块的设计与实现
进行求补的方法………….
(1)电路模块设计原理图。
求乘数补码电路原理结构如图2.2所示,实际电路如图2.3所示。
图2.2电路模块逻辑框图
图2.3实际取补电路
(2)创建元件图形符号
其元件图形符号如图2.4所示:
图2.4求乘数补码电路模块元件图形符号
(3)功能仿真
对创建的取补模块进行功能仿真,验证其功能的正确性,可用Xilinxfoundationf3.1编译器的Simulator模块实现。
仿真结果如图2.5所示:
图2.5取补模块仿真结果
2.2.2选择器模块的设计与实现
选择器主要由一个D2-4E芯片和逻辑门电路控制选择输出。
输入端输入的值分别为
,
以及“00000000”(八个输入端为一组)。
D2-4E芯片的
和
端的“0”和“1”控制
,
,
,
当
为01时,输出为
高电平,即为
输出值为1,通过逻辑门电路实现输出为
的值;当
为10时,输出为
为高电平,即为
输出值为1,通过逻辑门电路实现输出为
的值;当
为00时,输出为
为高电平,即为
输出值为1,同时当
为11时,输出为
为高电平,即为
输出值为1,由于此时
和
输出值为相同,故此两条数据线通过一个或门输出一条数据线,此时输出值为“00000000”。
正好实现三输入一输出的选择器模块。
(1)创建选择器设计原理图。
三输入一输出选择器原理结构如图2.6所示:
图2.6选择器原理框图
(2)创建元件图形符号
其元件图形符号如图2.7所示:
图2.7选择器元件图形符号
(3)功能仿真
对创建的三输入一输出器模块进行功能仿真,验证其功能的正确性,可用Xilinxfoundationf3.1编译器的Simulator模块实现。
仿真结果如图2.8所示:
图2.8选择模块仿真结果图
2.2.3移位寄存器模块的设计与实现
乘数补码移位寄存器模块由八个二选一选择器(MUXCY),9个寄存器(FD)组成,
端输入的是1个低电平信号其余都为高电平信号。
MUXCY选择器由控制信号
端,输入端
和
,以及输出端
组成,当
端为低电平信号时,选择输出
值,当
端为高电平信号时,选择输出
值。
每次的输出信号寄存到FD中,MUXCY输出端
连接下一位的寄存器,这样就实现了移位寄存的功能。
移位的
和
两个输出端恰好为
和
的两个值,
和
的两个值要分别接到选择器的
和
端。
(1)移位寄存器模块设计原理图。
乘数补码移位寄存器原理结构如图2.9所示:
图2.9乘数补码移位寄存器原理结构图
(2)创建元件图形符号
其元件图形符号如图2.10所示:
图2.10乘数补码移位寄存器电路模块元件图形符号
(3)功能仿真
对创建的乘数补码移位寄存器模块进行功能仿真,验证其功能的正确性,可用Xilinxfoundationf3.1编译器的Simulator模块实现。
仿真结果如图2.11所示:
图2.11乘数补码移位寄存器模块仿真结果
2.2.4部分积移位寄存器模块的设计与实现
部分积移位寄存器模块是由一个8位寄存器(FD8CE)和四个逻辑门电路组成,实现部分积移位寄存功能。
由于部分积的初始值为“00000000”,这样就要求FD8CE寄存器的初始值为“00000000”,只需要给清零端
一个高电平的信号即可实现。
进行部分积移位时,要求移位过程中保证符号位相同,这样就需要把第一位符号位复制为两个数,而其余的6位相继向下串一位,这样就实现了移位功能,同时还保证的符号位相同。
(1)部分积移位寄存器设计原理图。
部分积移位寄存器原理结构如图2.12所示:
图2.12部分积移位寄存器原理图
(2)功能仿真
对创建的寄存器模块进行功能仿真,验证其功能的正确性,可用Xilinxfoundationf3.1编译器的Simulator模块实现。
仿真结果如图2.13所示:
图2.13部分积移位寄存器仿真结果
2.2.5加法器模块的设计与实现
加法器模块是在系统提供的八位加法器(ADD8)的基础上,根据实际情况改造而来。
由于系统ADD8的输入输出的高低位与前几个模块的正好相反,所以为了实现功能对ADD8进行了改装。
改装后内部结构如图2.14所示。
图2.14改装后加法器内部结构图
2.3仿真调试
仿真调试主要验证设计电路逻辑功能、时序的正确性,本设计中主要采用功能仿真方法对设计的电路进行仿真。
通过多组数据进行仿真测试,分别对两个正数相乘,一个正数与一个负数相乘,两个负数相乘结果进行检验。
(1)建立仿真波形文件及仿真信号选择
功能仿真时,首先建立仿真波形文件,选择仿真信号,对选定的输入信号设置参数,选定的仿真信号和设置的参数如表2.3所示。
输入信号
输出信号
S1—S7
Y1—Y7
CLR
CLOCK
FJW
I0—I7,I13-I8
0111011
0000100
10000000
01010101
0
00000011,101100
1111011
0000100
10000000
01010101
0
11111100,010100
1111011
1000100
10000000
01010101
0
00000011,101100
表2.3仿真信号相关参数表
(2)功能仿真结果与分析
仿真结果分别如图2.15
、
、
所示。
图2.15功能仿真波形结果
由表2.3和图2.15所示信息对比可知,多组仿真都完全正确,说明本设计能实现补码一位乘法计算功能。
第3章编程下载与硬件测试
3.1编程下载
利用COP2000仿真软件的编程下载功能,将得到.bit文件下载到XCV200实验板的XCV200可编程逻辑芯片中。
3.2硬件测试及结果分析
利用XCV200实验板进行硬件功能测试。
……….的输入数据通过XCV200实验板的输入开关实现,输出数据通过XCV200实验板的LED指示灯实现,其对应关系如表3.1所示。
XCV200芯片引脚信号
XCV200实验板
P95
K0:
6
P96
K0:
5
P97
K0:
4
P100
K0:
3
P101
K0:
2
P102
K0:
1
P103
K0:
0
P80
K1:
6
P81
K1:
5
P82
K1:
4
P84
K1:
3
P85
K1:
2
P86
K1:
1
P87
K1:
0
P63
K2:
7
P73
K2:
0
P72
K2:
1
P71
K2:
2
P70
K2:
3
P66
K2:
4
P65
K2:
5
P64
K2:
6
P213
P213
P48
K3:
1
P49
K3:
2
P47
K3:
3
表3.1XCV200实验板信号对应关系
参考文献
[1]曹昕燕.EDA技术实验与课程设计[M].北京:
清华大学出版社,2006
[2]范延滨.微型计算机系统原理、接口与EDA设计技术[M].北京:
北京邮电大学出版社,2006
[3]王爱英.计算机组成与结构(第三版)[M].北京:
清华大学出版社,2006
[4]白中英.计算机组成原理(第四版)[M].北京:
科学出版社,2009
[5]胡越明.计算机组成与设计[M].北京:
科学出版社,2006
[6]江国强.EAD技术习题与实验[M].北京:
电子工业出版社,2005
[7]柳春风.电子设计自动化(EAD)教程[M].北京:
北京理工大学大学出版社,2005
附录(电路原理图)
课程设计总结:
本次课程设计,我受益匪浅。
当拿到课设题目后,我犯了想当然的错误,乐观的认为,题目很简单,原理很简单。
但在具体实行时却遇到许多困难,对Xilinxfoundationf3.1设计软件的陌生更加阻碍着我的进程。
于是,我决定沉下心来好好研究原理及软件的运用。
用了一天的时间将软件中的自带芯片的功能查询了一遍,基本找到需要的芯片。
之后,又学习了对电路封装的方法,再后来就能灵活的操作该软件,这对整个电路的设计很有帮助。
随后开始将各个部件连接到一起,这里也充满学问,不是单单的组合在一起,而是要综合考虑整体电路的节拍,以保证各个部件有序工作。
没有找到现成的三选一芯片,我只好自己设计。
设计的过程还真是痛苦,头脑中不断出现想法,但有一个个被现实否定,只能另寻方法。
不过,功夫不负有心人。
终于,我的想法终于在现实中实现了,就这样我完成了三选一芯片的设计,那时的我有一种释然的感觉,不过,我知道这只是一小步,要想最终完成还有很长的路要走,所以要继续努力。
在课设期间,我老师和同学都给予我很大的帮助,老师们总是不厌其烦的为我解决疑惑,同学们总是在我要放弃时鼓励我,这些都使我的课设顺利完成,在这里我要衷心说声谢谢,这份珍贵的经历,我会永远记在心中。
指导教师评语:
指导教师(签字):
年月日
课程设计成绩