8位格雷码编码器、高速分频器 课程设计报告.doc

上传人:laozhun 文档编号:4192183 上传时间:2023-04-09 格式:DOC 页数:13 大小:278KB
返回 下载 相关 举报
8位格雷码编码器、高速分频器 课程设计报告.doc_第1页
第1页 / 共13页
8位格雷码编码器、高速分频器 课程设计报告.doc_第2页
第2页 / 共13页
8位格雷码编码器、高速分频器 课程设计报告.doc_第3页
第3页 / 共13页
8位格雷码编码器、高速分频器 课程设计报告.doc_第4页
第4页 / 共13页
8位格雷码编码器、高速分频器 课程设计报告.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《8位格雷码编码器、高速分频器 课程设计报告.doc》由会员分享,可在线阅读,更多相关《8位格雷码编码器、高速分频器 课程设计报告.doc(13页珍藏版)》请在三一办公上搜索。

1、通达学院2012/2013学年 第二学期软件设计 实验报告模 块 名 称 8位格雷码编码器、高速分频器 专 业 通信工程 学 生 班 级 100019 学 生 学 号 10001927 学 生 姓 名 杨润达 指 导 教 师 王奇、孔凡坤、周小燕、梅中辉 设计题目基础题:8位格雷码编码器综合题:高速分频器设计任务要求基础题:设计一个8位(bit)二进制码输入,输出8位格雷码的编码器(输入:B7 -B0并行8位 , 输出G7-G0并行8位 ,提示:当i7时:G(i)=B(i+1)xorB(i),G(7)=B(7))。综合题:有一个10MHz的时钟源,为得到4Hz,3Hz,2Hz和1Hz的信号,请

2、设计一种分频器。实验设备及软件Quartus II 9.0同组人员学号及姓名无参考文献1王振红,VHDL电路设计与应用实践教程:机械工业出版社。2徐向民,数字系统设计及VHDL实践:机械工业出版社。3毛为勇,祁中洋,王兰,基于FPGA的任意小数分频器的设计:桂林航天工业高等专科学校学报8位格雷码编码器及高速分频器设计实验目的: 1.全面了解如何应用该硬件描述语言进行高速集成电路设计 2.通过软件使用、设计与仿真环节使学生熟悉EDA-VHDL开发环境 3.通过对基本题、综合题的设计实践,使学生掌握硬件系统设计方法 (自底向上或自顶向下),熟悉VHDL语言三种设计风格,并且培养 应用VHDL语言解

3、决实际问题的能力。实验设备:PC机实验课题:一、8位格雷码编码器 1、主要功能设计一个8位(bit)二进制码输入,输出8位格雷码的编码器(输入:B7 -B0并行8位,输出G7-G0并行8位,提示:当i7时:G(i)=B(i+1)xorB(i),G(7)=B(7)。 2、设计原理 根据组合逻辑电路的分析方法,先列出其真值表再通过卡诺图化简,可以很快 的找出格雷码与二进制码之间的逻辑关系。其转换规律为:高位同,从高到低看异 同,异出1,同出0。也就是将二进制码转换成格雷码时,高位是完全相同的,下一位格雷码是1还是0,完全是相邻两位二进制码的“异”还是“同” 来决定。下面举一个简单的例子加以说明。假

4、如要把二进制码10110110转换成格雷码,则可以通过下面的方法来完成,方法如图1-1。 图1-13、 功能仿真 说明:B7B0为输入信号,二进制码为:10110110 G7G0为输出信号,格雷码为:111011014、 实验代码: 见附录一 二、高速分频器设计 1、主要功能 设计一个分频器,对10Mhz的时钟源进行分频,以得到4Hz,3Hz,2Hz,1Hz的时钟。 2、设计原理 整体思路 因为10Mhz时钟源速度很快,直接分频成1Hz级别的时钟的话分频系数太大,虽然思路简单,但是在实现时会造成quartus的寄存器资源消耗殆尽,导致编译失败。 所以我先通过10分频和100000分频将10Mh

5、z时钟源分频为10Hz的时钟源,然后对10Hz的时钟源分别进行2.5分频,3.3分频,5分频,10分频。从而得到4Hz,3Hz,2Hz,1Hz的时钟源。 原理框图如图2-1所示。 图 2-1 2.5分频模块原理 设计一个模3的计数器,再设计一个扣除脉冲电路,加在模3计数器输出之后,每来两个脉冲就扣除一个脉冲(实际上是使被扣除的脉冲变成很窄的脉冲,可由异或门实现),就可以得到分频系数为2.5的小数分频器。 设需要设计一个分频系数为N-0.5的分频器,其电路可由一个模N计数器、一个二分频器和一个异或门组成,如图2-2所示。在实现时,模N计数器可设计成带预置的计数器,这样就可以实现任意分频系数为N-

6、0.5的分频器。电路原理图如图2-2所示。 图 2-2 3.3分频模块设计3 设置一个计数器,令其初始值为0;在时钟源clk的每一个上升沿,计数器加上Q,若计数器里面的值小于P,则发出删除一个脉冲的信号,将delete置为低电平;若其值大于P,则将计数器的值减去P,并且将delete置为高电平,不发出删除脉冲的信号。本实验中要将一个10Hz的时钟源分频为3Hz的时钟信号,则Q=3,P=10。 电路原理图如图2-3所示。 图 2-3 5分频模块设计 定义两个计数器,分别对输入时钟的上升沿和下降沿进行计数,然后把这两个计数值输入一个组合逻辑,用其控制输出时钟的电平。这是因为计数值为奇数,占空比为5

7、0%,前半个和后半个周期所包含的不是整数个clkin的周期。5分频,前半个周期包含2.5个clkin周期,后半个周期包含2.5个clkin周期。 10分频模块设计 定义一个计数器对输入时钟进行计数,在计数的前一半时间里,输出高电平,在计数的后一半时间里,输出低电平,这样输出的信号就是占空比为50%的偶数分频信号。10分频,计数值为04输出高电平,计数值为59输出低电平。3、功能仿真 由于题目所给的10Mhz时钟信号频率过大,如果直接对它进行分频的话将难以看到完整的结果,但如果将仿真时间调长,则仿真速度过慢,所以在仿真中,我将第一次分频的分频系数调低,然后选择适当的输入时钟频率,以验证2.5分频

8、,3.3分频,5分频,10分频的正确性。 仿真结果如图2-4所示。 图 2-44、 实验代码 见附录二设计总结 本实验主要是运用VHDL语言实现格雷码编码器和高速分频器的设计,相对于其他的来说,本实验比较简单,但在实际做的时候还是遇到不少的问题。 在编译时出现了许多错误,经过反复修改编译,再修改再编译最终排除了所有的错误。 在仿真时一开始看不到完整的结果,通过调节分频系数以及输入时钟频率的等手段仿真成功,验证了2.5分频,3.3分频,5分频,10分频的正确性。收获和体会 在老师布置好题目后,我仔细进行设计,通过查阅各参考书,最终把实验做出来了,达到了老师对本实验的要求。在这次设计中我收获颇丰,

9、首先最直接的收获就是我巩固了这节课所学的知识,把它运用到实践中去,并且学到了许多在课本中所没有的知识,通过查阅相关知识,进一步加深对EDA的了解。其次,我们不管做什么都不能粗心,如我们在输入程序是,把字母打错了时,保存文件时命名与程序中的名称不一样时,都会导致编译错误,在此过程中虽然浪费了不少时间,但这也让我注意到在实际做设计时应该注意的问题,意识到自己的不足,对学过的知识了解不够深刻,掌握的不足够。总的来说,这次设计还算成功,也让我明白了要把理论知识与实践结合起来,从实践中强化自己的理论,才能更好提高自己的实际动手能力和独立思考能力。如果在设计过程中遇到问题时,我们要有耐心并细心的查找错误,

10、这也是学习的过程。附录一格雷码编码器源代码library ieee;use ieee.std_logic_1164.all;entity green is port(B:in std_logic_vector(7 downto 0); G:out std_logic_vector(7 downto 0);end green;architecture code of green isbegin G(7) = B(7); G(6) = B(7) XOR B(6); G(5) = B(6) XOR B(5); G(4) = B(5) XOR B(4); G(3) = B(4) XOR B(3); G

11、(2) = B(3) XOR B(2); G(1) = B(2) XOR B(1); G(0) = B(1) XOR B(0);end code;附录二高速分频器源代码library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_signed.all;use ieee.std_logic_unsigned.all;entity div2 isgeneric(N10: integer:=10; N105: integer:=100000; N3: integer:=3; N5: integer:=5; N2: integer:=3; N1

12、0: integer:=10); port(cp_10mhz:in std_logic; delete: buffer std_logic; cp_10hz:out std_logic; cp_4hz:buffer std_logic; cp_3hz:out std_logic; cp_2hz:out std_logic; cp_1hz:out std_logic -tempout:inout std_logic );end div2; architecture clk of div2 issignal cp1mhz:std_logic;signal cnt_1mhz: integer ran

13、ge 0 to N10-1;signal cp10hz:std_logic;signal cnt_10hz: integer range 0 to N105-1;signal cnt_1hz: integer range 0 to N10-1;signal cnt_2hz1, cnt_2hz2: integer range 0 to N5-1;signal cnt_3hz: integer :=0;SIGNAL clk_4hz, dix: STD_LOGIC;SIGNAL cnt_4hz: integer range 0 to N5-1;constant P :integer:=10;cons

14、tant Q :integer:=3;-SIGNAL delete: std_logic;begin clk_4hz = cp10hz XOR dix;-clk=cp10hz xor div2;- process(cp_10mhz) -计数-1Mhz begin if(cp_10mhzevent and cp_10mhz=1) then if(cnt_1mhzN10-1) then cnt_1mhz = cnt_1mhz+1; else cnt_1mhz = 0; end if; end if; end process; process(cnt_1mhz) -根据计数值,控制输出时钟脉冲的高、

15、低电平 begin if(cnt_1mhzN10/2) then cp1mhz = 1; else cp1mhz = 0; end if; end process;-process(cp1mhz) -计数-10Hz- begin if(cp1mhzevent and cp1mhz=1) then if(cnt_10hzN105-1) then cnt_10hz = cnt_10hz+1; else cnt_10hz = 0; end if; end if; end process; process(cnt_10hz) -根据计数值,控制输出时钟脉冲的高、低电平 begin if(cnt_10h

16、zN105/2) then cp10hz = 1; cp_10hz = 1; else cp10hz = 0; cp_10hz = 0; end if; end process;-process(cp10hz) -计数-1Hz- begin if(cp10hzevent and cp10hz=1) then if(cnt_1hzN10-1) then cnt_1hz = cnt_1hz+1; else cnt_1hz = 0; end if; end if; end process; process(cnt_1hz) -根据计数值,控制输出时钟脉冲的高、低电平 begin if(cnt_1hz

17、N10/2) then cp_1hz = 1; else cp_1hz = 0; end if; end process;-process(cp10hz)-2Hz- begin if(cp10hzevent and cp10hz=1) then -shangshengyanjishu if(cnt_2hz1N5-1) then cnt_2hz1 = cnt_2hz1+1; else cnt_2hz1 = 0; end if; end if; end process;process(cp10hz) begin if(cp10hzevent and cp10hz=0) then -xiajiang

18、yanjishu if(cnt_2hz2N5-1) then cnt_2hz2 = cnt_2hz2+1; else cnt_2hz2 = 0; end if; end if; end process;cp_2hz = 1 when cnt_2hz1(N5-1)/2 or cnt_2hz2(N5-1)/2 else 0;- process(clk_4hz)-4Hz- begin if(clk_4hzevent and clk_4hz=1) then if(cnt_4hz=0) then cnt_4hz = N2-1;-置整数分频值N cp_4hz = 1; else cnt_4hz = cnt

19、_4hz-1;-模N计数器减法计数 cp_4hz = 0; end if; end if;end process; process(cp_4hz) begin if(cp_4hzevent and cp_4hz=1) then dix = not dix;-输出时钟二分频 end if;end process;-process(cp10hz)-3hz- begin if(cp10hzevent and cp10hz=1) then cnt_3hz=cnt_3hz+Q; if(cnt_3hzP) then delete=0; else cnt_3hz=cnt_3hz-P; delete=1; e

20、nd if; end if;end process;process(cp10hz,delete) begin cp_3hz=cp10hz and delete;end process; end clk;设计成绩评定评分内容具体要求总分评分上机时间上机时间是否达到要求的学时,按照实际情况给与一定的成绩。10分报告审阅结果报告结构严谨,文字通顺,用语符合技术规范,图表清楚,书写格式规范,不与别人雷同。30分验收结果原理原理清楚,能较好地理解课题任务并提出实施方案。20分完成情况独立完成规定设计任务,论证、分析、设计、计算、结构、建模、实验正确合理,有一定的创新。30分操作能熟练操作相关工具软件,并利用工具软件完成设计任务。10分总成绩(五分制)100分指导教师评阅意见

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号