《数字逻辑系统设计》设计报告格式.doc_第1页
《数字逻辑系统设计》设计报告格式.doc_第2页
《数字逻辑系统设计》设计报告格式.doc_第3页
《数字逻辑系统设计》设计报告格式.doc_第4页
《数字逻辑系统设计》设计报告格式.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

JIU JIANG UNIVERSITY数字逻辑系统课程设计报告设计课题: 简易电子琴 专 业: 电子信息工程 班级学号: 20学生姓名: 陈长源 指导教师: 盛健 设计时间: 2012.12.242012.12.28 简易电子琴1设计任务与要求1.1通过对一个简易的八音符电子琴的设计,进一步加深对计算机原理以及数字电路应用技术方面的了解与认识,进一步熟悉数字电路系统设计、制作与调试的方法和步骤1.2设计简易的八音符电子琴,它可通过按键输入来控制音响。1.3演奏时可以选择是手动演奏(由键盘输入)还是自动演奏已存入的乐曲。1.4能够自动演奏多首乐曲,且每首乐曲可重复演奏2方案设计及主要技术思路2.1方案一、本设计可有两种方案实现,他们的程序一样,但是所利用逻辑 元件不同,其一是将产生的32M频率模块,自动|手动控制模块,音节产生模块,分频模块依次连接。 2.2方案二、利用顶层设计将各个程序整合,再生成相应的图形文件,利用这个图形元件再接上外围即可实现功能。 2.3优劣分析及方案选定方案一层次分明,逻辑元件连接清晰,易于理解。反观方案二,虽然结构简单,但是不易理解。2.4 采用的硬件平台及主要技术 2.4.1 EDA技术是以计算机为工具,根据硬件描述语言HDL( Hardware Description language)完成的设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布局布线、仿真以及对于特定目标芯片的适配编译和编程下载等工作。 2.4.2 VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。3模块设计过程及仿真3.1 A模块的设计本设计主要分为四个模块,分别为32M频率产生模块,手动|自动模块,音节产生模块,分频模块3.1.1A模块要实现的具体功能,引脚。 32M频率产生模块的功能是要将100M频率变为32M,手动|自动模块是实现自动控制或手动控制,音调发生模块的作用是产生音阶的分频预置值,数控分频模块是对时基脉冲进行分频,得到与1、2、3、4、5、6、7七个音符相对应的频率。3.1.2 A模块的设计思路和设计方法及关键设计语句说明。音乐有两个重要因素,一个是音节,一个是音调。简单来说就是低音还是高音,每个音持续多久,即为频率。本设计主要就是依据这个思路来实现的,设计方法采用的是自顶而下的设计方法。关键设计语句在后面的具体程序有详细描述。3.1.3A模块的设计过程中遇到的问题及解决方法 本设计遇到的主要问题是如何产生32M的频率,由于程序要求的是32M,然而开发板上并没有32M的信号。开发板上有48M和100M的,在分析计算后,发现用100M产生32M结果更精确。3.1.4A模块实现的具体功能、仿真分析、模块符号图。(3) 数控分频模块(2)音调发生模块的仿真1.自动手动模块符号图3.1.5 A模块代码见附录,代码必须有注释。自动手动控制library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity automusic is Port ( clk,Auto : in std_logic; -系统时钟;键盘输入/自动演奏 index2 : in std_logic_vector(7 downto 0); -键盘输入信号 index0 : out std_logic_vector(7 downto 0); -音符信号输出 end automusic; architecture Behavioral of automusic is signal count0:integer range 0 to 31;-change signal clk2:std_logic; begin pulse0:process(clk,Aut0) -此进程完成对系统时钟8M的分频,得到4Hz的信号clk2 variable count:integer range 0 to 8000000; begin if Auto=1 then count:=0;clk2=0; elsif clkevent and clk=1 then count:=count+1; if count=4000000(4) then clk2=1;elsif count=8000000 (8)then clk2=0;count:=0; end if; end if; end process; music:process(clk2) -此进程完成自动演奏部分曲的地址累加 begin if clk2event and clk2=1 then if count0=31 then count0=0; else count0 index0 index0 index0 index0 index0 index0 index0 index0 index0 index0index0 index0 index0 index0 index0 index0 index0 index0 index0 index0 index0 index0 index0 index0 index0 index0 index0 index0 index0 index0 index0 index0 null; end case; else index0 tone0=773;code=1001111;high tone0=912;code=0010010;high tone0=1036;code=0000110;high tone0=1116;code=1001100;high tone0=1197;code=0100100;high tone0=1290;code=0100000;high tone0=1372;code=0001111;high tone0=1410;code=0000000;high tone0=2047;code=0000001;high=0; end case; end process; end Behavioral;分频模块library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity speaker is Port ( clk1 : in std_logic; -系统时钟 tone1 : in integer range 0 to 30624; -音符分频系数 spks : out std_logic); -驱动扬声器的音频信号 end speaker; architecture Behavioral of speaker is signal preclk,fullspks:std_logic; begin pulse1:process(clk1) -此进程对系统时钟进行4分频 variable count:integer range 0 to 8; begin if clk1event and clk1=1 then count:=count+1; if count=2 then preclk=1; elsif count=4 then preclk=0;count:=0; end if; end if; end process pulse1; genspks:process(preclk,tone1) -此进程按照tone1输入的分频系数对8MHz的脉冲再次分频,得到所需要的音符频率 variable count11:integer range 0 to 30624; begin if preclkevent and preclk=1 then if count11tone1 then count11:=count11+1;fullspks=1; else count11:=0;fullspks=0; end if; end if; end process; delaysps:process(fullspks) -此进程对fullspks进行2分频 variable count2 :std_logic:=0; begin if fullspksevent and fullspks=1 then count2:=not count2; if count2=1 then spks=1; else spksclk32MHZ,index2=index1,index0=indx,Auto=handtoAuto); u1: tone port map(index=indx,tone0=tone2,code=code1,high=high1); u2: speaker port map(clk1=clk32MHZ,tone1=tone2,spks=spkout); end Behavioral;3.2 B模块的设计 乐曲自动演奏模块的作用是产生8位发生控制输入信号。当进行自动演奏时,由存储在此模块的8位二进制数作为发声控制输入,从而自动演奏乐曲。 该模块的VHDL源程序主要由3个工作进程组成,分别为PULSE0,MUSIC和COM1。PULSE0的作用是根据键盘输入(自动演奏)的值(0或1)来判断计数器COUNT以及脉冲CLK2的输出值4整体设计及分析4.1整体设计说明及连接方法(含主要信号及节点说明) 整体设计图连接时,要注意到每个模块都是环环相扣的,前一个的输出是后一个的输入,而后一个的输出又是再后一个的输入,连接时一定要注意顺序。4.2 整体设计过程及遇到问题的解决方法。本设计时遇到的问题在按键控制与自动手动模块连接间,由于程序设计要求按键高电平有效,如果两者之间直接相连,则所有的按键都加了高电平至输入端,造成开发板无法识别,使得蜂鸣器发声杂乱,因此需在两者间加一个非门,则解决了问题。4.3设计整体逻辑图4.4 整体设计的仿真及分析4.4引脚配置5.下载与调试5.1下载的步骤成功编译硬件系统以后,将产生的FPGA配置文件输出,要实现硬件功能,还需将文件下载到目标FPGA器件上,具体步骤如下通过Z-Blaster 下载电缆线连接实验箱JTAG口和主计算机,接通试验箱电源,下载线驱动程序的安装。5.2测试的设置及测试方法在Quartus 2软件中选中Toolsprogrammer,也可用工具栏中的按钮,打开编程器窗口并自动打开配置文件,确保编程器窗口左上角的hardware setup 栏中硬件已经安装,选择JTAG模式。选中program、congifure 再单击start若灯亮,则表示配置成功。5.3测试的结果当第一路按键开关拨到 1 时二极管循环点亮,说明第一步成功了,当第一路按键开关拨到 0 时,蜂鸣器无声音。 5.4 测试中遇到的问题及解决方法经过一星期的努力,简易电子琴基本完成了,在此次设计中出现了以下问题,在设计中分频模块出现了问题,在查资料得知,程序中的为32Mhz,但在试验箱中只有48M和100M的,频率不相符合,因此最后通过查资料的方法选择了100M的6.结论与心得 经过努力,简易电子琴的设计基本上完成了。在整个设计过程中,包括前期中期和后期,我都有着许多不同的体会:6.1这个设计的基本是接触一门新的语言并加以应用,对于我来说,没有想到的是入手的速度比我的预料快,在以前编程的基础上,从接触到开始动手编程的时间得到了很大的缩短。VHDL的编程与C语言的编程有着本质的不同,然而以往形成的旧编程习惯在VHDL编程中依然起着很大的作用。一通百通,不是没有道理的。对于学习新的知识并予以应用的信心,显得更足了。6.2 VHDL的设计关键是电路逻辑设计,而一个程序的关键是总体设计。对于硬件设计接触不多的我们清楚这一点也许不无好处。通过这个程序设计让我学会一种新的语言,对数字系统结构也有了更进一步的了解和认识,对我以后的学习有很大的帮助。 6.3通过本次实习无疑为我们的明年做毕业设计论文打下了一定的基础,他能给我们一种做课程设计的思路。7.参考文献 1EDA技术与VHDL(第三版), 潘松 .清华大学出版社

温馨提示

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

评论

0/150

提交评论