模可变16位加法计数器教材_第1页
模可变16位加法计数器教材_第2页
模可变16位加法计数器教材_第3页
模可变16位加法计数器教材_第4页
模可变16位加法计数器教材_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计任务书学生姓名:专业班级:指导教师:工作单位: 信息工程学院题 目 :模可变 16 位加法计数器设计初始条件:可用仪器: PC机( Quartus II 软件) 硬件: EDA-IV型实验箱。要求完成的主要任务 :(1)设计任务设计可变 16 位加法计数器, 可通过 3个选择位 M2、M1、M0实现最多 8 种不同模 式的计数方式,例如可构成 5、10、16、46、 100、128、200、256 进制,共 8 种计数模式。2)时间安排:2012.12.172012.12.18-212012.12.222012.12.232012.12.24-26课程设计任务布置、选题、查阅资料 设计

2、,软件编程、仿真和调试 实验室检查仿真结果, 验证设计的可行性和正确性, 熟悉 实验平台和试验箱 设计的硬件调试2012.12.27-28机房检查设计成果,现场演示硬件实物 , 提交设计说明书及 答辩指导教师签名:系主任(或责任教师)签名:武汉理工大学 EDA课程设计说明书目录摘要 错误!未定义书签。Abstract II1 计数器的工作原理 12 设计原理 32.1 整体设计原理 32.2 单元模块的设计 42.2.1 计数模块的设计 42.2.2 显示模块的设计 . 52.2.3 分频模块的设计 . 52.2.4 顶层模块的设计 53 单元模块元件原理图 64 电路系统的功能仿真 85 硬

3、件调试 106 个人小结 12参考文献 13附录1.4.武汉理工大学 EDA课程设计说明书摘要计数器的种类按照计数器中的触发器是否同时翻转分类,可将计数器 分为 同步计数器 和异步计数器 两种,如果按照计数过程中数字增减分类, 又可将计数器分为加法计数器、减法计数器和 可逆计数器 ,随时钟信号不 断增加的为加法计数器,不断减少的为减法计数器,可增可减的叫做可逆 计数器。计数器不仅能用于对时钟脉冲计数,还可以用于分频、定时、产 生节拍脉冲和脉冲序列以及进行数字运算等。但是并无法显示计算结果, 一般都是要通过外接 LCD 或 LED 屏才能显示。本次课程设计重点研究了可变模计数器的设计与实现 ,

4、在对现有的可 变模计数器的研究基础上,在 Quartus 开发环境中,用 VHDL 语言设计一种 功能更加强大的可变模计数器,它具有清零、置数、使能控制、可逆计数 和可变模等功能,并且对传统的可变模计数器的计数失控问题进行研究, 最终设计出一种没有计数失控缺陷的可变模计数器,并通过波形仿真和 EPF10K20TI144-4系列实验箱,验证了其各项设计功能。结果表明该设计正 确功能完整。运行稳定。关键词:模可变,计数器, VHDL语言武汉理工大学 EDA课程设计说明书AbstractThe type of the counter flip-flop in the counter at the s

5、ame time flip the classification, can be counter to be divided into synchronous counters and asynchronous counters, digital changes in classification in accordance with the counting process, but also the counter is divided into adding counter, down counter and reversible counter, at any time the clo

6、ck signal increasing for the addition counter dwindling down counter, growth can be reduced is called the reversible counter, in addition to a variety of classification does not enumerate, The curriculum design will take advantage of many IC software Quartus II software, using the VHDL language to d

7、esign a 3-bit select the M2, the M1, M0 up to 8 different mode count The counter is not only used to count clock pulses, can also be used to divide, from time to time, the beat pulse and the pulse sequence and number crunching. Can not display the calculation results are generally through an externa

8、l LCD or LED screen to display.Focus on the counter variable mode of design and implementation. In the environment of Quartus based on research of the existing modulealterable counter, a module alterable counter with more functions,such as clea,r set,enable control, reversible count,modulealterable

9、count and so on, which is designedwith VHDL By researching the problem of losing control existed in traditional module alterable counter.A modulealterablecounter with no fault designedAnd through the waveform simulation and EPF10K20TI144-4 series experiment bo,x all of the functions are verified.The

10、 resuit indicates that the counter is designed correctly, and has integral functions and stable operationKeywords: Die variable; Counter; VHDL languageII武汉理工大学 EDA课程设计说明书1 计数器的工作原理计数器是数字系统中使用较多的一种时序逻辑器件。 计数器的基本功能是统计时钟脉冲的个数, 即对脉冲实现计数操作。 其工作原理可概述为: 当输入时钟脉冲的一个上升沿(也可以是下降沿)来临时,二进制数据的低一位加1(或减1),并向高位进 1(或借

11、 1)。在没有外部约束条件时,计数器可进行与其二进制 位数对应的数值的相应进制的自循环计数, 如位数为 3 的计数器可进行 8 进制的 自循环加法或减法计数。可根据需要来设置计数器的位数, 并通过外部约束条件来人为设定计数器的 计数模数,来得到计数进制符合需要的 N 进制计数器。所谓 N 进制计数器,是 指一个计数器的计数过程,在经历时钟脉冲信号的个为 N 之后,二进制数据又 回到初始状态的计数器。时钟Q0Q1Qn-1Qn0000.0000100012001030011.2n-111.102n111.11112n+1000.0000图 2.1 计数器的状态表武汉理工大学 EDA课程设计说明书图

12、 2.2 计数器的状态图武汉理工大学 EDA课程设计说明书2 设计原理本文所设计的为模可变的 16 位加法计数器,可通过 3 个选择位 M2、M1、 M0实现最多 8 种不同模式的计数方式,例如可构成 5、10、16、46、100、128、 200、256进制,共 8 种计数模式。并编程设计相关配套外围电路,通过把程序 下载到实验箱来实现硬件的调试。2.1 整体设计原理根据层次化设计理念, 可分解成分频模块、 计数模块、 显示模块来进行模块 化设计,再把各模块综合得到所设计的电子线路系统。 因为现实时需要用七段数 码管来显示所设计的电子系统功能, 所以需要设计显示模块。 又因为实验箱上的 时钟

13、脉冲频率为 20MHZ ,而实际需要的频率为 2HZ 和 2000HZ,所以实验箱上 的时钟脉冲频率不符合本次设计的使用要求, 还需要设计时钟分频模块对时钟进 行分频以得到频率为 2HZ 和 2000HZ 的时钟脉冲信号。始20MHZ时钟分 频 器(2HZ)分频器 2000HZ信号显示模块计数模块四位7段数码管显示模数选择模块3 个拨码开关控制图 3.1 整体设计原理框图武汉理工大学 EDA课程设计说明书原始时钟经过分频模块后得到符合要求的时钟脉冲信号作为计数模块的时 钟输入,通过 3 位拨码开关来控制模数选择模块的模数输出, 该模数输出作为计 数模块的模数选择信号输入, 计数模块的 16为数

14、据输出作为显示模块的 16 位数 据输入,显示模块的 7 位输出做为七段数码管的输入。2.2 单元模块的设计2.2.1 计数模块的设计 计数器是最常用的寄存器逻辑电路, 从未处理器的地址发生器到频率计都需要 用到计数器。 一般计数器分为两类: 加法计数器和减法计数器。 加法计数器每来 一个脉冲计数值加 1;减法计数器每来一个脉冲计数值减 1。本次课程设计需要做 的是加法计数器。计数模块中设计采用了常用的 if语句结构,即“ if条件句then顺序语句 elsif 条件句 then顺序语句 else顺序语句 end if”结构,实现模值小于 257的可变模计数。 课设所要求的 8 种不同模式的计

15、数方法,以简单的 5 进制为例,当拨码开关为 000 时,输出选中 5 进制,循环依次显示 0,1,2,3,4。计数源程序中定义了由三个 拨码开关控制的八种不同模式的计数方法, 000对应 5进制, 001对应 10进制, 010 对应 16进制,011对应 46 进制,100对应 100进制,101对应 128进制,110 对应 200进制, 111对应 256进制。程序中还使用 with select 语句可使程序设计变得简单, null 为空操作语句, 程序中使用 null when others 语句是为了避免当拨码开关输入出现错误输入时造 成程序功能错误。源程序中定义矢量信号变量是为

16、了实现变量自赋值,因为一般的输出变量不 能实现自赋值, 而计数过程中又需要变量自赋值来实现计数。 因为信号变量具有 暂存功能, 所以可实现自赋值。 因此需要设置信号变量, 再把信号变量的置赋予 输出变量,以使程序正确实现功能。武汉理工大学 EDA课程设计说明书2.2.2 显示模块的设计显示模块的设计可以由点阵或数码管显示来实现, 虽然点阵实现时所设计的 程序比较简单, 但是我觉得用点阵实现不同模式的结果不易直观的看出, 而且本 次课程设计最大实现 256 进制,所以需要利用三个数码管, 因此我选择用三个七 段数码管来实现。扫描显示电路需要设计位选程序, 分频程序和七段数码管程序。 位选程序是

17、由计数模块输出的两位来提供 8421BCD 码,经过译码电路后成为七段数码管的 字形显示驱动信号。 扫描电路通过可调时钟输出片选地址, 有片选地址和七段数 码管决定 7 位中的哪一位亮和显示什么字形。最终计数过程显示在数码管上, 将数据的百、 十、个位分开分别送三个数码 管显示,用 case when 语句实现数字的 BCD 码与数码的联系。数码管的位选利 用了 3/8 译码器及加快时钟频率带来的视觉暂留。2.2.3 分频模块的设计由于试验箱上提供的时钟频率为 20MHZ ,而实际需要的是 2HZ 和 2000HZ, 所以用两个计数器来实现分频。 利用计数器的进位输出作为分频后的时钟脉冲信 号

18、输出,计数器的计数进制就是分频器的分频数,即 N 进制的计数器就可以对 原始时钟进行 N 分频。分频模块的输出作为计数模块和显示模块位选功能的输入。2.2.4 顶层例化模块 元件例化是多层次的,在一个设计实体中被调用安插的元件本身也可以使一个 低层次的当前设计实体,因而可以调用其他元件, 以便构成更低层次的电路模块。 因此,元件例化就意味着在当前结构体内定义了一个新的设计层次。武汉理工大学 EDA课程设计说明书3 单元模块元件原理图选中所要的单元模块的 vhd 源程序文件后, 单击右键,选中“ Create Symbol Files for Current file ”选项即可。各单元模块的器

19、件原理图:图 4.1 分频模块原理图图 4.2 计数模块原理图图 4.3 数码管显示模块原理图图 4.4 位选部分原理图图 4.5 顶层元件例化原理图图 4.6 整体电子线路系统原理图武汉理工大学 EDA课程设计说明书5 电路系统的功能仿真利用 Quartus II 软件平台的仿真功能来对所设计的电子线路系统进行时序仿 真,以检测所设计的系统是否能够实现预期的功能,以便对源程序进行修改。完成整体电子线路系统的设计工作后, 新建 vwf 仿真文件, 对所设计的电子线路系统进行功能仿真,检测电子线路系统的正确性。图 4.1 新建仿真文件示意图图 4.2 计数模数为 10 的功能仿真波形武汉理工大学

20、 EDA课程设计说明书图 4.2 计数模数为 16 的功能仿真波形以上是以 10进制和 16进制计数模式为例的功能仿真波形在, 从图中可看出 所设计的电子线路系统可实现正确功能, 即该电子线路系统的设计是正确的。 在 仿真过程中由于源程序中时钟分频过大, 会导致看不到波形, 所以需要修改分频 参数,降低分频数, 以使在仿真过程中能够看到完整波形, 仿真正确后再改回原 来的参数。在仿真过程中, 可根据需要设置仿真时间长度, 以看到更多的仿真波 形,有利于从仿真波形中检测所设计的电子线路系统的正确性。武汉理工大学 EDA课程设计说明书6 硬件调试在对所设计的电子线路系统进行功能仿真, 确定所设计的

21、电子线路系统是正 确的后,接着把用 Quartus II 软件平台设计的电子线路系统程序文件下载到实验 箱,连接好相关外围电路,进行硬件的调试。在进行程序文件的下载前, 需要根据实验箱的设置和所用芯片的特点来进行 芯片管脚的分配。 在分配完管脚后, 关闭管脚分配窗口, 再对程序进行一次全编 译后即可进行程序的下载。 在下载过程中有时候可能会不能正确下载, 这时在检 查下载线连接实验箱无问题后, 可通过多次对程序文件进行全编译、 下载来解决。 下图为在 Quartus II 软件平台对芯片进行管脚分配的示意图。图 5.1 芯片管脚分配示意图10武汉理工大学 EDA课程设计说明书在对芯片分配完管脚

22、, 连接好数据下载线, 连接好实验箱上的外围电路, 给 实验箱上电后, 即可点击 Quartus II 操作界面上的工具栏的 “ Program”按钮的图标,在选择“ Program/Configure”后,点击“ Star”按钮进行程序文件的下载。 下图为程序文件的下载操作示意图。图 5.2 程序文件的下载操作示意图程序下载完毕后,通过实验箱上的 3 位拨码开关来选择所设计的可实现多进制计数功能的电子线路系统的计数进制,通过实验箱上点阵的第8 列作为 16位LED 灯来显示系统的计数进程,调试结果表明所设计的计数器电子线路系统能 够实现通过 3个选择位 M2、M1、M0实现最多 8种不同模式

23、的计数方式,例如 可构成 5、10、16、46、100、128、200、256 进制,共 8 种计数模式的正确功能。11武汉理工大学 EDA课程设计说明书6 个人小结本次 EDA 课程设计历时两个星期,这次最大的收获就是学会了很系统地去 解决一个实际问题,学会了巧妙运用模块化的思想。在整个电路设计与实现中, 最成功的地方就是有条理地将功能细化, 分成一个一个小的功能来实现。 同时也 更加深入地了解了 Quarterii 这一软件的更多的功能。更重要的是在此过程中, 我学会了独立思考, 遇到问题一步一步去研究与解决解决, 对于电路出现的问题 不急于拆线, 而是一部分一部分地对其应有的功能进行调试

24、, 对问题进行各个击 破。总而言之,这次实验让我觉得受益匪浅,不再觉得学无所用。实验所解决的 问题与生活紧密相连, 从而将平时学书本上的理论与实践很好地结合起来, 最终 当做出成品时,有很大的成就感。通过这次设计,进一步加深了对 EDA 的了解,让我对它有了更加浓厚的兴 趣。特别是当每一个子模块编写调试成功时, 心里特别的开心。 但是在编写顶层 文件的程序时,遇到了不少问题,特别是各元件之间的连接,以及信号的定义, 总是有错误,在细心的检查下,终于找出了错误和警告,排除困难后,程序编译 就通过了,心里终于舒了一口气。在波形仿真时,也遇到了一点困难,想要的结果不能在波形上得到正确的显示 :,经过

25、同学的帮助终于可以得到仿真结果,很 感谢在这次课设过程中帮助我的老师和同学们。12武汉理工大学 EDA课程设计说明书参考文献1 伍时和主编,数字电子技术基础,北京:清华大学出版社, 2009.42 潘松,黄继业 EDA技术实用教程 M 北京:科学出版社, 20043 侯伯亨,顾新 VHDI,硬件描述语言与数字逻辑电路设计:西安电子科技大 学出版社, 20004 李国丽,朱维勇,栾铭EDA与数字系统设计 M 北京:机械工业出版社 20055 卢毅,赖杰 VHDL与数字电路设计 M 北京:科学出版社, 20016 李志,田永清,朱仲英 VHDL的设计特点与应用研究 J 微型电脑应用2002(10)

26、 :587 王风英,崔国玮邸建红计数器的 VHDI,设计与实现 J 现代电子技术,2007,30(9) :11411613武汉理工大学 EDA课程设计说明书附录计数模块的源程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity counter isport( clk:in std_logic;mode:in std_logic_vector(2 downto 0);count:out std_logic_vector(11 do

27、wnto 0);end counter;architecture bhv of counter is signal qa :std_logic_vector(11 downto 0); beginprocess(clk,mode)beginif rising_edge(clk) thenif mode=000 thenif qa=000000000100 then qa=000000000000;else qa=qa+1;end if;end if;if mode=001 thenif qa=000000001001 then qa=000000000000;14武汉理工大学 EDA课程设计说

28、明书else qa=qa+1;end if;end if;if mode=010 thenif qa=000000010101 then qa=000000000000;elsif qa(3 downto 0)=1001 thenqa(3 downto 0)=0000;qa(7 downto 4)=qa(7 downto 4)+1;else qa(3 downto 0)=qa(3 downto 0)+1;end if;end if;if mode=011 thenif qa=000001000101 thenqa=000000000000;elsif qa(3 downto 0)=1001 t

29、henqa(3 downto 0)=0000;qa(7 downto 4)=qa(7 downto 4)+1;else qa(3 downto 0)=qa(3 downto 0)+1;end if;end if;if mode=100 thenif qa=000010011001 thenqa=000000000000;elsif qa(3 downto 0)=1001 then15武汉理工大学 EDA课程设计说明书qa(3 downto 0)=0000;qa(7 downto 4)=qa(7 downto 4)+1; else qa(3 downto 0)=qa(3 downto 0)+1;

30、 end if;end if;if mode=101 thenif qa=000100100111 then qa=000000000000;elsif qa(3 downto 0)=1001 thenif qa(7 downto 4)=1001 thenqa(7 downto 4)=0000;qa(11 downto 8)=qa(11 downto 8)+1; else qa(7 downto 4)=qa(7 downto 4)+1; end if;qa(3 downto 0)=0000;else qa(3 downto 0)=qa(3 downto 0)+1; end if;end if;

31、if mode=110 thenif qa=000110011001 then qa=000000000000;elsif qa(3 downto 0)=1001 thenif qa(7 downto 4)=1001 thenqa(7 downto 4)=0000;qa(11 downto 8)=qa(11 downto 8)+1; else qa(7 downto 4)=qa(7 downto 4)+1; end if;16武汉理工大学 EDA课程设计说明书qa(3 downto 0)=0000;else qa(3 downto 0)=qa(3 downto 0+)1; end if;end

32、 if;if mode=111 thenif qa=001001010101 then qa=000000000000;elsif qa(3 downto 0)=1001 thenif qa(7 downto 4)=1001 then qa(7 downto 4)=0000;qa(11 downto 8)=qa(11 downto 8)+1; else qa(7 downto 4)=qa(7 downto 4)+1; end if;qa(3 downto 0)=0000;else qa(3 downto 0)=qa(3 downto 0)+1;end if;end if;end if;end

33、process; count=qa;end bhv;显示模块的源程序: 位选: library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;17武汉理工大学 EDA课程设计说明书entity weixuan isport(clk :in std_logic;wx:out std_logic_vector(1 downto 0);end weixuan;architecture bhv of weixuan issignal qa : std_logic

34、_vector(1 downto 0);begin process(clk)beginif rising_edge(clk) then if qa=10 then qa=00; elseqa=(qa+1);end if;end if;end process; wx led7 led7 led7 led7 led7 led7 led7 led7 led7 led7null; end case;elsif wx=01 thencase b iswhen 0000 = led7 led7 led7 led7 led7 led7 led7 led7 led7 led7 null;end case;el

35、secase c iswhen 0000 = led7 led7 led7 null;end case;end if;end process; end dx;分频模块的源程序:library ieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entity fenpinqi isport( inclkoutclk:in std_logic;:out std_logic);20武汉理工大学 EDA课程设计说明书end entity;architecture bhv o

36、f fenpinqi isbeginprocess(inclk)variable counter :integer range 1 to 10000000;beginif rising_edge(inclk) thenif counter=10000000 thencounter:=1;else counter:=counter+1;end if;if counter5000001 thenoutclk=1;else outclk=0;end if;end if;end process;end bhv;library ieee;use ieee.std_logic_1164.all;use i

37、eee.std_logic_arith.all;use ieee.std_logic_unsigned.all; entity fenpinqiwx isport( inclkoutclk:in std_logic;:out std_logic);end fenpinqiwx;architecture bhv of fenpinqiwx is21武汉理工大学 EDA课程设计说明书beginprocess(inclk)variable counter :integer range 1 to 10000; beginif rising_edge(inclk) thenif counter=1000

38、0 thencounter:=1;else counter:=counter+1;end if;if counter5001 thenoutclk=1;else outclk=0;end if;end if;end process;end bhv;顶层例化源程序: library ieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;entity adder16 isport( clk_top:in std_logic;mode_top:in std_logic_vector(2 downto 0);wx_top:out std_logic

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论