数字秒表及电子琴的设计EDA (2)

时间:2024.5.9

EDA课程设计(二)

         设计名称:数字秒表及电子琴的设计

班级:       

学号:     

姓名:          

指导老师:      

   同组成员:

20##年9月30日

目录

一、系统总体设计思想............................................................................................... 4

1. 需求分析.............................................................................................................. 4

2. 总体构思.............................................................................................................. 4

二、系统各组成模块详细设计、仿真验证(着重译码显示部分)....................... 5

1. 分频模块.............................................................................................................. 6

2.消颤模块................................................................................................................ 6

3.选通模块................................................................................................................ 6

4.模60模块.............................................................................................................. 6

5.模24模块.............................................................................................................. 7

6.模100模块............................................................................................................. 8

7.译码显示模块......................................................................................................... 8

三、器件编程与硬件下载......................................................................................... 10

四、实际系统调试..................................................................................................... 10

1.实际系统调试的步骤............................................................................................. 10

2. 实际系统调试的注意点........................................................................................ 11

五、设计中遇到的问题总结及心得体会.................................................................. 11

参考文献...................................................................................................................... 11

VHDL语言设计数字系统,可以大大缩短数字系统的开发时间,本文利用VHDL语言进行了数字秒表以及电子琴电路的设计。

数字秒表的逻辑结构主要由分频模块、模60模块、模24模块、模100模块、消颤模块、选通模块和译码显示模块组成,同时有一个启动信号和一个归零信号,以便秒表能够随意停止及启动。电子琴由音调发声模块QIN和分频模块FANA组成,分频预置值控制数控分频模块进行分频,由此得到每个音阶对应的频率。

根据秒表和电子琴的电路特点,本设计采用层次设计概念,利用VHDL语言描述,将设计任务分成若干模块,规定每一模块的功能和各模块之间的接口,然后再将各模块合起来联试仿真下载,最终完成设计。

关键词:VHDL  秒表   电子琴  

一、系统总体设计思想

1. 需求分析

通过本课程的学习使学生掌握可编程器件、EDA开发系统软件、硬件描述语言和电子线路设计与技能训练等各方面知识;提高工程实践能力;学会应用EDA技术解决一些简单的电子设计问题。

2. 总体构思

2.1秒表总体构思

图1-1 秒表总体设计图

秒表的逻辑结构主要由分频模块、模60模块、模24模块、模100模块、消颤模块、选通模块和译码显示模块组成,同时有一个启动信号和一个归零信号,以便秒表能够随意停止及启动。根据秒表的电路特点,本设计采用层次设计概念,利用VHDL语言描述,将设计任务分成若干模块,规定每一模块的功能和各模块之间的接口,然后再将各模块合起来联试仿真下载,完成设计,如图1-1所示。

本设计选用4MHZ时钟频率,对4MHZ时钟信号进行分频得到100HZ和1000HZ信号。将得到的100HZ时钟脉冲作为秒表输入,秒表模100模块计数,百分之一秒位正常计数;将得到的进位信号作为模60输入,秒位正常计数;再将秒位进位信号作为下一个模60的输入,分位正常计数;最后,将分位得到的进位信号作为模24的输入,实现小时的正常计数。所以本程序的主体部分就是对分频模块、模100计数器、模60计数器和模24计数器的设计。秒表主体设计结束需要将数据在LED七段显示灯管数据显示采用动态扫描的方式实现数据的输出,此时需要将分频得到的1000HZ高频脉冲接入七段显示灯管的扫描端口,8个七段显示管I/O数据线接受数据信息,七段显示管数据变化通过位选通引脚实现。由人眼的视觉留像原理,当扫描频率超过24hz,由于人眼的视觉反应延迟,可以看到七段数码管数字实现连续变化。此外,为了保证按键输入的准确性,本设计加入了相应的消颤电路。为了保证控制的灵活性,加入了启停开关。

本设计原理图如图1-2所示。

图1-2 秒表设计总体原理图

2.2电子琴总体构思

该系统基于计算机中时钟分频器的原理,采用自顶向下的设计方法来实现,通过按键输入来控制音响。系统由音调发生模块和数控分频模块三个部分组成。系统实现是用硬件描述语言VHDL按模块化方式进行设计,然后进行编程、时序仿真、电路功能验证,奏出美妙的乐曲(当然由于条件限制,暂不进行功能验证,只进行编程和时序仿真)。该设计最重要的一点就是通过按键控制不同的音调发生,每一个音调对应不同的频率,从而输出对应频率的声音。

系统的总体设计原理图如图1-3所示。

图1-3 电子琴总体设计原理图

二、系统各组成模块详细设计、仿真验证

在本次实验我主要完成了数字秒表模100、模60、模24模块及译码显示电路的设计,下文我将着重介绍上述模块的设计方案及仿真。关于电子琴的设计,电子琴由音调发声模块QIN和分频模块FANA组成,音调发生模块的作用是产生音阶的分频预置值。当8位发声控制输入信号中的某一位为高电平时,则对应某一音阶的数值将输出,该数值即为该音阶的分频预置值,分频预置值控制数控分频模块进行分频,由此得到每个音阶对应的频率。此处设计比较简单下文不作详述。

1. 分频模块

分频模块用于将4MHZ时钟频率分频为100HZ和1000HZ。

2.消颤模块

按键信号在开关多次弹跳才能稳定的过程中,可能产生多个脉冲,所以应该根据实际情况进行消颤处理,以提取相对稳定的电平状态。多次检测按键信号电平值,提取前后两个信号进行比较,最终获得按键的最终状态。

3.选通模块

动态显示电路想实现数据的动态显示,首先,需要有选通信号,此处需要选通模块与译码器配合使用;其次,要实现动态显示,则需要将每一位要显示的数据轮流经选择至显示模块,此处,需要选通模块产生数据选择信号。

4.模60模块

模60模块、模24模块和模100模块原理类似,此处以模60模块为例,详细介绍我的设计思路。

模60模块的逻辑流程图如图2-1所示。

图2-1 模60模块流程图

模60模块主要代码如下:

fclr='0'then

    cnt1:="0000";

                     cnt0:="0000";

              elsif clk'event and clk='1'then

                     if en='1' then

                            if cnt1="0101" and cnt0="1000" then

                            co<='1';

                            cnt0:="1001";

                            elsif cnt0<"1001" then

                                   cnt0:=cnt0+1;

                            else

                                   cnt0:="0000";

                            if cnt1<"0101" then

                                   cnt1:=cnt1+1;

                            else

                                   cnt1:="0000";

                                   co<='0';

                            end if;

                     end if;

              end if;

              end if;

正常计数状态当每次时钟信号上升沿到来,计数值加1,每次检测计数值是否到58,当到达58就将计数值在下一个周期上升沿置为59,并将进位信号置为1,当计数值大于59,计数值从0开始重新计数。

模60模块仿真波形如图2-2所示:

图2-2 模60模块仿真图

5.模24模块

模24模块仿真图如图2-3所示:

图2-3 模24电路仿真图

6.模100模块

模100模块仿真图如图2-4所示::

加1计数,加到9高位进位。

图2-4 模100仿真图

加到99输出进位信号。

7.译码显示模块

译码显示电路可以通过数码管的选通引脚轮流选通输入数据,从而,在扫描频率足够高的情况下可实现动态显示效果。译码显示电路包含选通电路、数据选择电路以及七段显示码转换电路。译码显示电路设计原理图如图2-5所示。

图2-5 译码显示电路

选通电路主要代码如下:

process(clk)

       variable cnt:std_logic_vector(2 downto 0);

       begin

              if clk'event and clk='1' then

                     cnt:=cnt+1;

              end if;

              q<=cnt;

end process;

每一时钟上升沿到来,进行加一计数,选通下一种情况。

仿真波形如图2-6所示:

图2-6 选通电路仿真图

其对应配合的数据选择电路主要代码如下:

process(sel)

   begin

              case sel is

                     when "000"=>q<=bai0;

                     when "001"=>q<=bai1;

                     when "010"=>q<=sec0;

                     when "011"=>q<=sec1;

                     when "100"=>q<=min0;

                     when "101"=>q<=min1;

                     when "110"=>q<=h0;

                     when "111"=>q<=h1;

                     when others=>q<="1111";

              end case;

end process;

情况0输出百分个位,情况1输出百分十位,情况2输出秒个位,情况3输出秒十位,情况4输出分个位,情况5输出分十位,情况6输出时个位,情况7输出时十位。

译码电路主要代码如下:

process (d)

       begin

              case d is

                     when "0000"=>q<="0111111";

                     when "0001"=>q<="0000110";

                     when "0010"=>q<="1011011";

                     when "0011"=>q<="1001111";

                     when "0100"=>q<="1100110";

                     when "0101"=>q<="1101101";

                     when "0110"=>q<="1111101";

                     when "0111"=>q<="0100111";

                     when "1000"=>q<="1111111";

                     when "1001"=>q<="1101111";

                     when others=>q<="0000000";

              end case;

end process;

将十进制数译为七段显示码显示数据。

三、器件编程与硬件下载

(1)在MAX+plusⅡ软件中为顶层文件选择好芯片类型,选定引脚后进行编译。

(2)将实验箱端口与计算机相应端口连接,检测试验箱是否可以使用,经检测无误后,关闭实验箱,将主芯片标号对应顶层文件相应引脚标号连线到相应器件处。即输入时钟信号端接实验箱时钟发生电路CLK0输出端(用4MHz信号),启动信号端和归零信号端分别接两个拨码开关,输出端SEL[2..0]分别接显示模块的SEL2—SEL0端,输出a,b,c,d,e,f,g,dp端接八段显示译码器的相应输入端,。连接好连线后打开实验箱电源,将设计好的程序下载到实验箱的FLEX10K \ EPF10K10LC84-3芯片中即可测试功能。

四、实际系统调试

1.实际系统调试的步骤

在实际系统调试过程中我采用了以下步骤:

1.      首先,我将4M时钟信号分频以后接到LED灯,验证了分频电路的准确性;

2.      接着,验证模100、模60、模24电路时,可将各模块单独接入时钟信号,将输出信号输出至LED灯,最终测试得到模100、模60、模24电路的准确性;

3.      然后,为了验证动态显示电路的准确性,我将SEL模块、BBC模块和DISP模块组成简单的动态显示电路,输入简单的数字,确认使能信号有效,数据选择器有效,七段显示码转换电路准确;

4.      最后,将所有调试好的模块一步步组合在一起,直至所有电路搭建结束,测试实验结果准确性。

2. 实际系统调试的注意点

实际调试中一定要注意分模块调试,然后再一步步将模块组合在一起,直至电路搭建结束。而且特别要注意分配管脚要对照数据手册,很多时候都是因为管脚分配错误使得最终运行结果出错。

五、设计中遇到的问题总结及心得体会

在这次课程设计中,我学到了很多。一是对VHDL语言的熟悉,以及VHDL语言作为一门底层语言在EDA设计中的重要地位。二是对系统调试的掌握,程序编好之后,重要的是编译调试。在程序复杂的情况下,会有很多复杂的模块,调试的时候要分模块调试,这样把问题以大化小,提高了效率。

本次EDA设计,让我们进一步加强了动手实践能力,在处理程序的过程中也有遇到过问题,但在老师和学长的耐心指导下,一一克服并最终做成了这个实验。在这里要感谢老师和学长们百忙之中给予的帮助。

参考文献

【1】 电子技术应用 20## 年 09 期  

【2】潘松,黄继业 . EDA 技术实用教程(第三版). 科学出版社 . 20##-07   

【3】曾繁泰 陈美金 VHDL 程序设计[M].北京:清华大学出版社,2001 

更多相关推荐:
数字电压表设计报告(终结版)

数字电压表摘要在电子器件设计中以单片机作为控制核心的系统得到了广泛的应用尤其以MCS51最为普遍而数字电压表的基本原理是对直流电压进行模数转换并将其结果用数字直接显示出来为以单片机为控制核心实现数字电压表的设计...

数字电压表的课程设计报告

桂林电子科技大学课程设计论题目数字电压表设计院系信息与通信学院专业通信工程姓名曾中羽指导老师陈明职称教授20xx年12120文月日桂林电子科技大学摘要本设计为直流数字电压表设计设计初共参考了二种方案由于设计的要...

单片机的数字电压表课程设计报告

课程设计报告一题目基于单片机的数字电压表二内容和要求内容利用带有ADC的STC12C5A60S2单片机1602LCD显示器设计一个数字电压表要求4位数码LCD显示测量范围05V带8位LED可自行添加器件实现其它...

电子电路课程设计报告--数字电压表

河北建筑工程学院课程设计报告课程名称电子技术综合课程设计题目名称312位数字电压表系电气系专业班级学号学生姓名指导教师职称高级实验师20xx年7月10日1目录一课程设计的目的二课程设计的具体要求和技术指标三数字...

数字电压表的课程设计报告

智能仪表综合课程设计摘要本文介绍了一种基于单片机的简易数字电压表的设计该设计主要由三个模块组成AD转换模块数据处理模块及显示模块AD转换主要由芯片ADC0832来完成它负责把采集到的模拟量转换为相应的数字量在传...

数字电压表设计报告

河北建筑工程学院电子技术课程设计报告题目数字电压表设计院系电气工程系专业电控112姓名刘茂珅学号20xx308216指导老师吕英丽设计地点单位河北建筑工程学院电气实验室设计时间20xx年2月25日20xx年3月...

数字电压表的设计报告

课程设计题目数字电压表学院攀枝花学院专业电子信息工程本科2班指导教师于娟学生姓名学号二一四年10月三十日前言随着电子科学技术的发展电子测量成为广大电子工作者必须掌握的手段对测量的精度和功能的要求也越来越高而电压...

数字电压表课设报告

单片机原理及系统课程设计专业自动控制班级自控控1203姓名苏龙学号20xx09429指导教师闵永智兰州交通大学自动化与电气工程学院20xx年12月31日单片机原理及系统课程设计报告基于单片机的数字电压表设计1设...

数字电压表设计报告

数字电压表设计设计者陈一设计任务和要求11任务描述1以单片机为核心设计一个数字电压表能够对至少两路05V的模拟电压进行采集采集数据送LED显示2设计显示模式切换按钮可单独显示某一路电压信号也能对所有电压信号进行...

数字电压表的设计实验报告

课程设计数字电压表设计物理与电子信息学院电子信息工程小组成员丁智军武龙1课程设计要求邓懿陈欢乐淮北师范大学20xx6数字电压表的设计使用单片机AT89C52和ADC0832设计一个数字电压表能够测量05V之间的...

开题报告(简易数字电压表的设计)

毕业论文设计开题报告

电子信息工程论文--基于单片机的数字电压表的设计

基于单片机的简易数字电压表的设计目录内容摘要2第1章数字电压表简介311数字电压表的介绍312数字电压表的基本结构及工作原理313数字电压表的发展趋势3第2章单片机的概述421单片机简介422单片机的特点523...

数字电压表设计报告(24篇)