1、 1 一、课程设计目的一、课程设计目的 1.学习操作数字电路设计实验开发系统, 掌握数码管显示模块的工作原理及 应用。 2.掌握组合逻辑电路、时序逻辑电路的设计方法。 3.学习掌握可编程器件设计的全过程。 二、课程设计内容和要求二、课程设计内容和要求 2.1、设计内容:、设计内容: 1学习掌握按键控制模块、数码管显示模块的工作原理及应用。 2. 熟练掌握 VHDL 编程语言,编写按键控制模块的控制逻辑。 3. 仿真所编写的程序,模拟验证所编写的模块功能。 4. 下载程序到芯片中,硬件验证所设置的功能,能够实现八进制数字的显 示。 2.2、设计要求、设计要求 1本课程设计说明书。 2VHDL 源
2、程序及内部原理图。 3该设计可以在实验箱上正常工作并演示。 三、设计方案及实现情况三、设计方案及实现情况 3.1、设计思路、设计思路 对于这个题目,我的设计思路是利用实验箱上的按键开关控制计数实现一 个四位的八进制计数器接到数码管显示,每一位都可以加一或减一计数,低位的 数若计到“7”后就会向高位产生进位,若减到“0”后就会向高位产生借位。进 位和借位的信息通过接到二极管亮灭显示。本设计还应包含一个复位键,用以实 现重新计数。用两个模块实现这个电路,分别是时序控制按键计数模块和数码管 显示模块。 3.2、工作原理及框图工作原理及框图 第一个模块是时序控制按键计数模块。 2 Bcdx是八进制数要
3、显示的数字,在 4 个加一控制按键(Addx)和 4 个减一 控制按键 (Subx) 的控制下分别进行加一和减一计数, 同时低位数字若加到 “7” 就向次高位产生进位(Coutx) ,若减到“0”就向次高位产生借位(Soutx) 。 (x 对应于 1,2,3,4。1 是个位,2 是十位,3 是百位,4 是千位。 ) 下图是该模块的工作原理图。 图 1 模块一原理图 第二个模块是时钟扫描数码管显示模块。 8 段数码管是由 8 个发光二极管组成。这 8 个发光二极管有一个公共端, 必须接 GND(共阴极数码管)或者接 VCC(共阳极数码管) 。对 8 个二极管的另 一端进行控制,相应的就能控制他们
4、的亮暗。不同的亮暗组合就产生了数字 0-F 的显示效果。若希望数码管显示某个数字,只要给数码管的 8 个段选接口送相应 的译码信号即可。 对于一组数码管动态扫描显示需要由两组信号来控制: 一组是字段输出口输 出的字形代码,用来控制显示的字形,称为段码;另一组是位输出口输出的控制 信号,用来选择第几位数码管工作,称为位码。 若要各位数码管能够显示出与本位相应的字符,就必须采用扫描显示方式。 即在某一时刻,只让某一位的位选线处于导通状态,而其它各位的位选线处于关 闭状态。同时,段线上输出相应位要显示字符的字型码。这样在同一时刻,只有 3 选通的那一位显示出字符,而其它各位则是熄灭的,如此循环下去,
5、就可以使各 位数码管显示出将要显示的字符。 虽然这些字符是在不同时刻出现的,而且同一时刻,只有一位显示,其它各 位熄灭,但由于数码管具有余辉特性和人眼有视觉暂留现象,只要每位数码管显 示间隔足够短,给人眼的视觉印象就会是连续稳定地显示。 下图是两个共阴数码管 SM4205 的段选和位选与 CPLD 的 I/O 连接。 图 2 模块二原理图 图 3 总体电路原理图 4 3.3 各模块功能描述各模块功能描述 (1)时序控制按键计数模块)时序控制按键计数模块 图 4 时序控制按键计数模块图 代码如下: library ieee; use ieee.std_logic_1164.all; use ie
6、ee.std_logic_unsigned.all; entity anjian is port(add1,sub1,add2,sub2,add3,sub3,add4,sub4:in std_logic; clk,reset:in std_logic; sout1,cout1,sout2,cout2,sout3,cout3,sout4,cout4:out std_logic; bcd1,bcd2,bcd3,bcd4:out std_logic_vector(3 downto 0); end entity anjian; architecture rt1 of anjian is signal bcd1n:std_logic_vector(3 downto 0); signal bcd2n:std_logic_vector(3 downto 0); signal bcd3n:std_logic_vector(3 downto 0); signal bcd4n:std_logic_vector(3 downto 0); signal cout1n:std_l