

下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课题名称3232 进制同步减法计数器设计设计内容及要求试设计一个 3232 进制同步减法计数器,输入的数字信号由实验装置上的开 关给定,输出由 LEDLED 完成,同时数码管也显示输入和输出的数字信号。要求 设置 2 2 个按钮,一个供开始”用,一个供系统复位”用。系统提供 50MHZ50MHZ 频率的时钟源。完成该系统的硬件和软件的设计,并制作出实物装置,调试 好后并能实际运用(指导教师提供制作所需的器件),最后就课程设计本身提 交一篇课程设计说明书。设计工作量1 1、VHDLVHDL 语言程序设计;2 2、波形仿真;3 3、 在实验装置上进行硬件测试,并进行演示;4 4、提交一份完整的课程
2、设计说明书,包括设计原理、程序设计、程序分析、 仿真分析、硬件测试、调试过程,参考文献、设计总结等。进度安排起止日期(或时间量)设计内容(或预期目标)备注第 1 1 天课题介绍,答疑,收集材料第 2 2 天设计方案论证第 3 3 天进一步讨论方案,对设计方案进行必要的修 正,方案确定后开始进行 VHDLVHDL 语言程序设 计第 4 4 天设计 VHDLVHDL 语言程序第 5959 天在实验装置上进行硬件测试,对 VHDLVHDL 语言 程序进行必要的修正,并进行演示第 1010 天编写设计说明书系(部)主管领导意见年 月曰年 月曰教研室意见目录一、设计目的 .1二、设计原理 .1三、设计
3、.13.1设计思路 .13.2设计步骤 .1四、.Quartus口9.0操作步骤3五、.程序45.1完整程序 .45.2仿真程序 .8六、仿真 .126.1仿真结果 .126.2仿真结果分析 .12七、.引脚分配13八、.课程设计总结 .14参考文献 .151一、设计目的1 )巩固和加深对“ EDA 技术”的基本知识的理解,提高综合运用本课程所学知识的能力。2 )培养学生根据课题需要选学参考书籍、查阅手册、图表和文献资料的自学能力。通过独立 思考,深入钻研相关问题,学会自己分析解决问题的方法。3)培养硬件设计、软件设计及系统软、硬件调试的基本思路、方法和技巧,并能熟练使用当 前较流行的一些有关
4、电路设计与分析的软件和硬件。二、设计原理计数是一种最简单基本的运算,计数器就是实现这种运算的逻辑电路,计数器在数字系统中 主要是对脉冲的个数进行计数,以实现测量、计数和控制的功能,同时兼有分频功能,计数器是 由基本的计数单元和一些控制门所组成,计数单元则由一系列具有存储信息功能的各类触发器构 成,这些触发器有 RS 触发器、T触发器、D 触发器及 JK 触发器等。按照计数器中的触发器是否同 时翻转分类,可将计数器分为同步计数器和异步计数器两种。本次设计是 32进制同步减法计数器。 32进制的二进制范围为“ 00000”到“ 11111 ”, 即十进 制 031。当显示的数小于 31 时,数字将
5、自减,减至 0 时又跳会预先输入的数,如此循环。系统提 供 50MHZ 频率的时钟源,输入的数字信号由实验装置上的开关给定,输出由LED 完成,同时数码管显示输入和输出的数字信号。设置2 个按钮,一个作“开始”,即使能端 en,个作系统“复位” res。三、设计3.1设计思路本次程序设计的思路主要是分模块进行。32 进制同步减法计数器的基本工作原理是循环自减,因此得需要一个自减 VHDL 的程序。系统提供 50MHZ 频率的时钟源,频率太大,肉眼无法观察,得 需要一个分频的程序。数码管的同步显示需要一个扫频的程序。输入的数字可能是一位数也有可能是两位数,一个数码管只能显示一位数,因此需要有把一
6、个两位数分成两个一位数的 程序,本次设计的程序就是利用了取余的函数rem。将以上几个分支程序进行整理,再加上数码管的显示程序以及一些附加程序便可得完整的程 序。3.2设计步骤1.自减 VHDL 程序process(en,res,clk1)beginx=conv_integer(start) rem 10;y=(conv_integer(start)/10)rem 10;x2=y;y2=x;i f res=1thendi=0;xp=start;elsif en=1thenif clk1event and clk1=1 thenif xp=0 thenxp=start;elsexp=xp-1;en
7、d if ;end if;end if;end process;程序中, res 是复位信号, 功能是在在出现 res=1 是,将数码管回到最初始状态, 循环显示; en 是一个开始信号,只有 en=1 时,计数才开始工作; conv_integer() 为十进制数; start 为输入信号, xp 为信号。2.分频程序process(clk)variable a1:integer range 24999999 downto 0;beginif clkevent and clk=1 thenif a124999999 thena1:=a1+1;elsea1:=0;clk1=not clk1;e
8、nd if;end if;当 rst=0 是,是将二进制变1end process;将 50MHZ 的频率分为 1HZ 即将 50MHZ 分成两部分,每数完 25MHZ 信号 clkl 就变化一次, 以此达到目的。3. 扫频程序process(clk)variable b1:integer range 20000 downto 0;begini f clkevent and clk=1 then if b120000 then b1:=b1+1;elseb1:=0;clk2=not clk2;end if;end if;end process;扫频的程序与分频程序原理都一样4. 位数分离程序p
9、rocess(xp)variable b:integer range 0 to 9;variable a:integer range 0 to 3;beginb:=conv_integer(xp) rem 10; a:=(conv_integer(xp)/10)rem 10;ai=a;bi=b;end process;此程序用到了 rem 求余函数,将个位与十位分开。四、Quartusn9.0操作步骤1 .运行 Quartusn9. 0 并创建工程路径(如: E:example ),以便相关设计文件和工程管理。2. 新建一个 VHDL 文本文件。3. 创建新工程并添加设计文件到工程。4. 选择
10、目标器件 Cyclone 系列 EP1C20F324C8 芯片。5. 对源代码进行语法检查和编译。6. 创建仿真波形文件并仿真。7引脚分配。8重编译,编程下载,下载完成后验证功能。五、程序5.1完整程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY DCLK ISPORT(clk:IN STD_LOGIC;res,en:in std_logic;start:IN STD_LOGIC_VECTOR(4 DOWNTO 0); le
11、d7s2:out std_logic_vector(6 downto 0); scan:outstd_logic_vector(3 downto 0) );end;architecture one of DCLK IS signal di:integer range 31 to 0; signal w:std_logic_vector( 2 downto 0);signal clk1,clk2:std_logic; signal ai,bi:integer;signal xp:STD_LOGIC_VECTOR(4 DOWNTO 0); signal x,y:integer range 0 to
12、 9;-FENPINbeginprocess(clk)variable a1:integer range 24999999 downto 0; beginif clkevent and clk=1 thenif a124999999 then a1:=a1+1;else a1:=0;clk1=not clk1;end if;end if; end process; -SCAN CLK process(clk) variable b1:integer range 20000 downto 0; begini f clkevent and clk=1 then if b120000 thenb1:
13、=b1+1;else b1:=0;clk2=not clk2;end if;end if;end process;-COUNTER process(en,res,clk1) beginx=conv_integer(start) rem 10; y=(conv_integer(start)/10)rem 10; x2=y;y2=x;i f res=1thendi=0; xp=start;elsif en=1thenif clk1event and clk1=1 then if xp=0 thenxp=start; elsexp=xp-1; end if ;end if;end if;end pr
14、ocess; process(xp) variable b:integer range 0 to 9; variable a:integer range 0 to 3;begin b:=conv_integer(xp) rem 10; a:=(conv_integer(xp)/10)rem 10; ai=a;bi=b;end process; process(ai,bi,clk2,y,x) begini f clk2event and clk2=1 then if w=100 thenw=000; else w=w+1;if w=000 thenscanled7s2led7s2led7s2le
15、d7s2null;end case;end if;if w=001 thenscanled7s2led7s2led7s2led7s2led7s2led7s2led7s2led7s2led7s2led7s2null;end case;end if;if w=010 thenscanled7s2led7s2led7s2led7s2null;end case;end if;if w=011 thenscanled7s2led7s2led7s2led7s2led7s2led7s2led7s2led7s2led7s2led7s2null;end case;end if;end if;end if;end
16、 process; end;5.2仿真程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY DCLK ISPORT(clk:IN STD_LOGIC;res,en:in std_logic;start:IN STD_LOGIC_VECTOR(4 DOWNTO 0); led7s2:out std_logic_vector(6 downto 0);scan:out std_logic_vector(3 downto 0);x1,y
17、1:out integer range 0 to 9;x2,y2:out integer range 0 to 9;xp_disp:out STD_LOGIC_VECTOR(4 DOWNTO 0); end;architecture one of DCLK ISsignal di:integer range 31 to 0;signal w:std_logic_vector( 2 downto 0);signal clk1,clk2:std_logic;signal ai,bi:integer;signal xp:STD_LOGIC_VECTOR(4 DOWNTO 0); signal x,y
18、:integer range 0 to 9;begin-FENPIN process(clk)variable a1:integer range 4 downto 0;beginif clkevent and clk=1 thenif a14 thena1:=a1+1;elsea1:=0;clk1=not clk1;end if;end if;end process;-SCAN CLKprocess(clk)variable b1:integer range 20000 downto 0; begini f clkevent and clk=1 thenif b120000 thenb1:=b
19、1+1;else b1:=0;clk2=not clk2;end if;end if;end process;-COUNTER process(en,res,clk1) beginx=conv_integer(start) rem 10; y=(conv_integer(start)/10)rem 10; x2=y;-TEST SHURU SHIWEIy2=x;-TEST SHURU GEWEI i f res=1thendi=0;xp=start;elsif en=1thenif clk1event and clk1=1 thenif xp=0 thenxp=start;elsexp=xp-
20、1;end if ;end if;end if; xp_disp=xp; -TEST ZIJIAN end process;process(xp)variable b:integer range 0 to 9; variablea:integer range 0 to 3;begin b:=conv_integer(xp) rem 10; a:=(conv_integer(xp)/10)rem 10; ai=a;bi=b;x1=ai;-TEST SHUCHU SHIWEI y1=bi;-TEST SHUCHU GEWEI end process;process(ai,bi,clk2,y,x)
21、begini f clk2event and clk2=1 then if w=100then w=000;else w=w+1; if w=000 then scanled7s2led7s2led7s2led7s2null;end case;end if;if w=001 thenscanled7s2led7s2led7s2led7s2led7s2led7s2led7s2led7s2led7s2led7s2null;end case;end if;if w=010 thenscanled7s2led7s2led7s2led7s2null;end case;end if;if w=011 th
22、enscanled7s2led7s2led7s2led7s2led7s2led7s2led7s2led7s2led7s2led7s2nu II;end case;end if;end if;end if;end process;en d;六、仿真6.1仿真结果6.2仿真结果分析Clk 为时钟源,10hz 分频为 1hz , Ied7s2 为数码管显示,en 为使能控制端,res 为复位端,start 为输入,scan 为片选输出,x1 为输出的十位,y1 为输出的个位,x2 为输入的十位,y2 为 输入的个位,xp_disp 为输入数的自减。当 res 为低电平,en 为高电平时,程序开始运行
23、;当 res 为高电平时,输出的值就跳回最开 始输入的值,h!fah!fa B B B B- K K h!kh!k一.53.53-3-3-flIL-flIL-一arn-lb1!1! lele- - 4444 JPJP一inin聃一ntfntf - -高电平消失后,程序又开始自减,如此循环显示。七、引脚分配3Partition Hierarchyroot partitjonYesldkLocationPINJ3YesLocationPIN P3YeslresLocationPIN R1YeslstartOLocationPIh M3YesLocationPIh M4Yeslstart2Locab
24、onPIN N1YesR5tart3LxntjonPINJ42Yes吃t勺LocationPIN N3Yested7s20LocationPIN_L3Yested7s22LocationPIN H3Yesfted7s23LocabonPIN H4Yested7s24LocationPIN H1YesaiEd7s25LocationPIN L2Yesabd?s26LocationPIN K4YesiscanOLocationPIh G3YesCscanlLocationPIN G4Yes衿scan 2LocationPIN E2Yesscan 3LgtionPINJ=2Yesewn ew八、课程
25、设计总结EDA 课程设计很快就结束了, 虽然在之前的学习过程中还存在着没有弄懂的问题,但是通过这次设计,进一步加深了对 EDA 的 了解,让我对它有了更加浓厚的兴趣。EDA 设计我感觉程序调试、试验软件、硬件熟悉最重要。在编完各模块程序之后,编译查错最 初有十几个错误,有输入错误、语法错误。一遍一遍的编译查错,直到没有错误。必须注意工程 名和实体名一致,不然一般会出错。在没有错误之后可以进行波型仿真。若与理想的不同,再查 看程序,有无原理上的编辑错误或没有查出的输入错误。通过本次 EDA 课程设计,让我更进一步的熟悉了VHDL 语言,了解了其中的语法,同时,在做32 进制同步减法计数器计数显示的过程中, 遇到了很多的困难, 但从这些困哪中,我也受益匪浅, 有困难才会提高,这样自己才能学到更多的东西。在本次课程设计中,让我学到了不少知识,知道了什么叫数码管的动态显示,更深一步了解 了数码管的显示原理,以前在做实验时,只知道按照实验指导书上一步一步按部就班的做,有些 地方根本就没有深刻的理解,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论