自动化专业电子课程设计报告题目:可编程可逆计数器设计姓名王振学号0808020231指导教师:廖晓纬评阅成绩等次:电气信息工程系2010-2011 第二学期摘要:本课程设计是基于Altera公司开发的QuartusⅡ软件进行的设计,利用QuartusⅡ设计软件的元件库所提供的集成器件来实现任意进制计数器的设计,此软件是学习EDA(电子设计自动化)技术的重要软件。
其中硬件使用高性价比的FPGA/CPLD(元件可编程逻辑闸阵列/复杂可编程逻辑器件)器件,软件利用VHDL(超高速集成电路硬件描述语言)语言,计数器电路的功能取决于硬件描述语言对设计对象建模的描述,经过精心调试使可编程器件的芯片利用效率达到最优,较之以往的数字电路设计和单片机功能设计具有灵活简便的优势,特别是在对复杂计数器设计,可大大减少调试时间,优化系统设计。
关键词:EDA;任意进制计数器;QuartusⅡ;VHDL目录前言 (3)一、设计的任务与要求 (4)1.1 设计任务 (4)1.2 设计要求 (4)二、总体设计和系统框图 (4)2.1计数器方案 (4)2.2 数码管驱动显示方案 (4)2.3 N进制设定设计方案 (5)2.4电路系统总体设计 (5)三、硬件设计 (6)3.1计数器部分设计硬件连接方式 (6)3.2 驱动译码部分设计 (7)3.3进制输入部分设计 (7)3.4整体电路部分 (7)四、软件设计(系统仿真) (9)4.1程序工作流程图 (9)4.2 仿真步骤及结果 (10)五、设计结果分析 (12)5.1 系统能实现的功能 (12)5.2 系统所选用软件及芯片型号 (12)六、设计总结和体会 (12)6.1设计总结 (12)6.2设计的收获及体会 (12)6.3 设计的完善 (13)致谢 (13)参考文献 (13)程序代码 (14)前言随着电子技术、计算机技术和EDA技术的不断发展,利用FPGA/CPLD 进行数字系统的开发已被广泛应用于通信、航天、医疗电子、工业控制等领域。
与传统电路设计方法相比,FPGA/CPLD具有功能强大,开发周期短,投资少,便于追踪市场变化及时修改产品设计,以及开发工具智能化等特点。
近年来,FPGA/CPLD发展迅速,随着集成电路制造工艺的不断进步,高性价比的FPGA/CPLD器件推陈出新,使FPGA/CPLD成为当今硬件设计的重要途径。
在FPGA/CPLD的应用设计开发中,VHDL语言作为一种主流的硬件描述语言,具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大简化了硬件设计任务,提高了设计效率和可靠性,并在语言易读性和层次化、结构化设计方面。
表现出了强大的生命力和应用潜力。
QuartusⅡ是Altera公司在21世纪初推出的FPGA/CPLD集成开发环境,是Altera公司前一代FPGA/CPLD集成开发环境Max+PlusⅡ的更新换代产品,其界面友好,使用便捷,功能强大,为设计者提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件编程。
计数器是数字系统中使用最多的时序电路之一,不仅能用于对时钟脉冲计数,还可以用于分频、定时、产生节拍脉冲和脉冲序列以及进行数字运算等。
可变进制计数器由于计数容量可以根据需要进行变化,为其广泛使用创造了便利。
本课程设计是在QuartusⅡ开发环境下,用VHDL语言实现一种具有清零、使能控制、可逆计数和可变进制功能的计数器。
一、设计的任务与要求1.1 设计任务设计出一个模值16以内任意进制的可编程可逆计数器。
1.2 设计要求使可编程可逆计数器具有以下功能:(1)具有的功能清零、使能控制、可逆计数、可变进制功能。
(2)进制输入需要显示,还要有控制端控制,计数器输出也要显示。
二、总体设计和系统框图2.1计数器方案计数器是本设计的最主要的部分,本设计使用了Altera公司开发的QuartusⅡ软件,硬件芯片选用ALTERA公司研发的2.5v的ACEX1K系列的EP1K10TC100-1型号,软件使用VHDL语言对设计对象建模,实现一种具有清零、使能控制、可逆计数和可变进制功能的计数器,无需人工修改属性,软件会自动设置好最佳配比给予所设计的电路。
2.2 数码管驱动显示方案用VHDL描述语言设计一种二-十进制BCD译码器,译码器输入din为4或5位二进制数,输出为以4位二进制数表示的两个十进制数a,b。
如右图所示,粗线代表数据总线,din[3..0]代表4位二进制输入端口,可为0000~1111,din[4..0]为5位二进制输入端口,可为00000~11111,不过在设计中只需要输入到10000即可,a[3..0]和b[3..0]设置为输出为0000~1001的数据输出口,BCD译码器可选用74LS48BCD-7段译码器/驱动器,BCD译码器后面接数码显示器如BS202数码显示器器件。
2.3 N进制设定设计方案设计一个十七进制计数器来构成0~16进制可任意设定的计数器,计数器的输入由人工手动按cp键输入单个脉冲累加得到,并设置一个与门可以把输入的数据传输到计数器模块当中(在实际中可设计为接触按键),从而使模块独立化。
右图所示clk为cp脉冲手动输入端,通过人工控制cp脉冲来输入进制值,y[4..0]为进制输出,可用数码管显示输入的进制值,如果用户想要更改进制,可用clr清除控制进制为0,从新输入进制。
2.4电路系统总体设计设计方案的框图如图1所示。
使用模值为16的芯片器件,设计一个进制输入端,供用户选择所需的进制,然后给与计数器计数脉冲,用控制端控制计数器工作,在由驱动显示模块显示进制和计数状态。
图1可编程可逆计数器总体框图三、硬件设计3.1计数器部分设计硬件连接方式(1)clk 为时钟信号,由时钟信号的上升沿触发计数;(2)m 为进制输入端,当其变化时,计数容量相应发生变化;(3)clr 为清零控制端,当其为高电平时清零;(4)en 为使能控制端,当其为高电平时正常计数,当其为低电平时暂停计数,相当于保持;(5)updn 为计数方向控制端,当其为高电平时计数器加法计数,当其为低电平时计数器减法计数。
显示模块计数器 驱动译码 进制输入 时钟脉冲清零控制 可逆 控制使能 控制(6)q为数据输出端(7)co进位输出端,如果计数达到进位,输出为高电平3.2 驱动译码部分设计(1)bcd7s为BCD译码器端口图,其中A[3..0]为4为二进制输入,此处使用功能为0000~1001,,led7s[6..0]为译码器输出端口,共阴极接入数码管上。
(2)V2是一种可以把二进制转换为十进制的译码器,din为4位二进制输入0~15,a,b分别为十进制的个位和十位输出,a输出为0~9,b输出为0~1。
(3)V5是功能和V2一样的译码器,不过是在输入时增加了输入量,输入为0~16,din为5为二进制输入端口最大输入可为31,在设计中把最大值设置为16,输出端口a,b分别为十进制的个位和十位输出,a输出为0~9,b输出为0~1。
3.3进制输入部分设计设计一个十七进制计数器ct17供用户输入16以内的进制值,它可以输入0~16,输出为5位二进制端口,数据为00000~10000,具有清零,进位输出功能。
后面接入V5译码器即可分别显示输入数据的个位和十位。
3.4整体电路部分QuartusⅡ软件可实现混合编辑,先建立一个工程项目,然后建立5个VHDL文本文件,分别命名“jishuqi.vhd”“ct17.vhd”“V2.vhd”“V5.vhd”“bcd7s.vhd”,保存,然后分别输入程序代码,然后可对上述五个文件分别创建图元符号,成功后就可以使用,即可在原理图上编辑,连接好各模块即可设计出可编程可逆计数器原理图。
图2.总体设计图上图中黑色粗线条代表数据连接总线,黑色细线代表连接线四、软件设计(系统仿真)4.1程序工作流程图N YN Y显然开始时要全部清零,然后输入所需进制值,在数码管中显示出来,然后用与门控制控制把进制输入到计数器中,开始计数,输入1HZ 脉冲,然后把使能控制开关打开,接下来就可以改变计数方向,观察数码管显示。
上 电 初始化 进制显示为0 计数器显示为0 接收到数据等待用户 输入进制值 计 满 显示 进制转入计数状态 显示计数状态 停止计数4.2 仿真步骤及结果该多功能可变进制计数器在QuartusⅡ开发环境下用混合编辑方法分别进行了功能仿真和时序仿真验证,仿真结果如图3,图4。
值得注意的是,这里所设计的多功能可变模计数器具有如下特点:(1)该设计的多功能可变进制计数器具有多个功能控制端。
因此各个控制端的优先权顺序就成为设计的关键,经过理论分析和仿真调试,最终确认的优先权顺序为:clr(清零) →cp(进制输入) →kz(进制控制)→clk(时钟触发)→en(使能)→updn(计数方向)。
这个优先权顺序可以有效地保证各个功能的完整实现,以及技术器的稳定运行。
(2)为了防止出现计数失控,大多数计数器采用给计数器增加一个复位控制端的办法,当发现计数输出q发生了计数失控时,通过复位控制端将计数器复位来排除计数失控。
这种方法虽然有效,但是每次出现计数失控都要手动控制复位,给实际使用带来了不便。
该设计的多功能可变模计数器中,将当前的计数输出q与当前的计数最大值m_temp进行比较,如果q比m_temp 大,则强制将m_temp赋给q,这样就可以自动避免计数失控,不必再增加手动的复位控制端。
图3. 可编程可逆计数器功能仿真图如图3所示,首先清零,给予cp14个脉冲,jh输出为6,对应数码管显示为1,jl输出为102,对应数码管显示为4,在一起可得出输入14个脉冲,然后使kz键为1可把进制输入到硬件jishuqi中,clk开始有1HZ脉冲开始计数,xh,xl,根据进制的输入开始从0输出到输入的进制值在减去1即为13,所以xh为输出6,对应数码管显示为1,xl输出为79,对应数码管显示为3,当updn为高电平1时,计数状态为加计数,而为低电平0时,计数器状态为减计数,在图中可以明确看出。
Co为计数器的进位输出,高电平显示。
图3图4的原理是一样的,只不过一个是功能仿真,一个是时序仿真。
图4.可编程可逆计数器时序仿真图仿真图里面的数据可参照下面的表格:下表第一行为译码器输出,第二行为数码管对应显示63 6 91 79 102 109 125 7 127 1110 1 2 3 4 5 6 7 8 9五、设计结果分析5.1 系统能实现的功能能实现模值为16的清零、使能控制、可逆计数和可变进制功能。
说明了设计的正确性。
5.2 系统所选用软件及芯片型号软件:QuartusⅡ芯片型号:ACEX1K系列的EP1K10TC100-1六、设计总结和体会6.1设计总结QuartusⅡ是EDA数字电路的一种学习软件,它可使设计者能方便地进行设计输入、快速处理和器件编程。