版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 20162017学年 第一学期数字电子技术课 程 设 计 报 告题 目: 数字电压表设计 专 业: 电子信息 班 级: 08电子信息1 姓 名: 张三、李四 指导教师: 周珍艮 电气工程系2016年X月X日数字系统设计任务书课题名称数字电压表设计指导教师(职称)周珍艮(副教授)执行时间20162017学年第一学期 第XX周学生姓名学号承担任务设计目的1、掌握VHDL语言的基本结构及应用2、掌握利用VHDL语言进行数字系统设计方法设计要求用FPGA和模数转换器ADC0804设计一个数字电压表,能够测量05V之间的直流电压,用三个数码管显示被测电压,要求小数点后有两位数字显示。第1章
2、EDA简介 . 1第2章 彩灯控制器的设计原理 . 2第3章 程序设计和分析 . 3第4章 波形仿真分析 . 第5章 硬件测试 . 11第6章 心得体会 . 12第1章 EDA简介 EDA技术(即Electronic Design Automation技术)就是依赖强大的计算机,在EDA工具软件平台上,对以硬件描述语言HDL (Hardware Ddscription Lang
3、urage)为系统逻辑描述手段完成的设计文件,自动地完成逻辑编译、化简、分割、综合、布局布线以及逻辑优化和仿真测试,直至实现既定的电子线路系统功能。它在硬件实现方面融合了大规模集成电路制造技术、IC版图设计、ASIC测试和封装、FPGA(Gield Peogrammable Gate Array)/CPLD(Complex Programmable Logic Device)编程下载和自动测试等技术;在计算机辅助工程方面融合了计算机辅助设计(CAD),计算机辅助制造(CAM),计算机辅助测试(CAT),计算机辅助工程(CAE)技术以及
4、多种计算机语言的设计概念;而在现代电子学方面则容纳了更多的内容,如电子线路设计理论、数字信号处理技术、数字系统建模和优化技术及长线技术理论等。硬件描述语言HDL是EDA技术的重要组成部分,常见的HDL主要有VHDL、Verilog HDL、ABEL、AHDL、System Verilog和SystemC。其中VHDL、Verilog和现在的EDA设计中使用最多,并且我们学习的是VHDL的编程方法和实用技术。VHDL的英文全名是VHSIC(Very High Speed Integrated Circuit)Hardware
5、Description Language,由IEEE(The Institute of Electrical and Electronics Engineets)进一步发展,并在1987年作为“IEEE标准1076”公布。从此VHDL成为硬件描述语言的业界标准之一。VHDL技术与传统的数字电子系统或IC设计相比之下有很大的优势,主要表现在:第一, VHDL语言具有很强的电路描述和建模能力,能从多个层次对数字系统进行建 模和描述,从而大大简化了硬件设计任务,提高了设计效率和可靠性。第二, VHDL
6、具有也具体硬件电路武官和与设计平台无关的特性,并且具有良好的电 路行为描述和系统描述的能力,并在语言易读性和层次化,结构化设计方面,表现了强大的生命力和应用潜力。EDA书中所给出的所有的实力和实验都是基于Quartus 6.0的,其应用方法和设计流程对于其他流行EDA工具的使用具有一定的典型性和普遍性。它提供了完整的多平台设计环境,能满足各种特定设计的需要,也是单芯片可编程系统(SOPC)开发的基本设计工具,并为Altera DSP开发包进行系统模型设计提供了集成综合环境。Quartus 6.0包括模块化的编译器。编译器包括的功能模块有分析/综合器(An
7、alysis Synthesis)、适配器(Fitter)、装配器(Assembler)、时序分析器(TimingAnalyzer)、设计辅助模块(Design Assistant)、EDA网表文件生成器(EDA Netlist Writer)、编辑数据接口(Compiler Database Interface)等。可以通过选择Start Compilation来运行所有的编译器模块,也可以通过选择Start单独运行各个模块。还可以通过选择Compiler Tool,在Compiler To
8、ol窗口中运行该模块来启动编译器模块。第2章 彩灯控制器的设计原理本次彩灯控制器的设计包含几个主要模块,一是彩灯显示和扬声器的时序控制部分,二是发光二极管的动态显示和数码管的动态显示,本次设计中,二者的显示同步变化;三是扬声器的控制部分。流程图如下所示:图1 彩灯控制器的设计流程图彩灯控制器的设计核心主要是分频器的使用,显示部分的设计较简易。分频的方法有很多种,本次设计之采用了其中较简易的一种,通过计数器的分频,将控制器外接的频率分为几个我们预先设定的值。当计数器达到预先设定的值,即产生一个上升沿,从而实现分频。 扬声器通过不同的频率控制发出不同的声音。同样发光二
9、极管和数码管的显示速度也由其中分出来的一种频率控制(控制显示频率在14之间为宜)。通过使能端的控制可以控制不同的数码管显示预先设定的图案,数码管依次显示的图案为AA、BB、CC,并随着发光二极管同步动态显示。AA为自左向右显示,BB为自右向左显示,CC从二边向中间再由中间向二边发散显示。与此同时,显示不同的花型时扬声器发出不同的声音,代表不同的花型。本次设计还带有复位功能,通过复位可以使彩灯控制器恢复到最初的状态。第3章 程序设计和分析library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_
10、unsigned.all;建立设计库和标准程序包实体部分:entity pan isport(clk:in std_logic;clr:in std_logic;speak:out std_logic;led7s1:out std_logic_vector(6 downto 0);led7s2:out std_logic_vector(7 downto 0);led_selout:out std_logic_vector(7 downto 0);end
11、160;entity;实体名为pan,定义端口,输入端口为clk和clr ,其中clk接脉冲信号,clr接复位端;输出端口speak接扬声器,led7s1接数码管的七段显示部分,led7s接八个发光二极管,led_selout接八个数码管的使能端,控制数码管的循环显示。结构体部分:architecture one of pan issignal s: std_logic_vector(4 downto 0);signal clk1:std_logic;signal clk2:std_l
12、ogic;signal clk3:std_logic;定义4个信号,cq,cllk1,clk2,cess(clk)variable a:std_logic_vector(5 downto 0);begin10:55:54if clr='1' thenclk1<='0' - 复位信号控制部分elseif clk'event and clk='1'thenif a="110010"t
13、hena:="000000"clk1<='1'elsea:=a+1;clk1<='0'end if;end if;end if;end process;以上程序为第一次分频,为50分频,当clk发生变化,使a从000000变化到110010时 产生一个上升沿clk1。如果a没有变化到110010则a继续自加,直到110010为止产生下一个上升沿。process(clk)variable b:std_logic_vector(4 downto 0);be
14、ginif clr='1' thenclk2<='0' -复位信号elseif clk'event and clk='1'thenif b="11001"thenb:="00000"clk2<='1'elseb:=b+1;clk2<='0'end if;end if;end if;end process;以上程序为对clk进行25分频,原理同
15、上,产生信号cess(clk)variable c:std_logic_vector(2 downto 0);beginif clr='1' thenclk3<='0' -复位信号elseif clk'event and clk='1'thenif c="111"thenc:="000"clk3<='1'elsec:=c+1;clk3<='0&
16、#39;end if;end if;end if;end process;以上程序为对clk进行8分频,产生一个新的时钟脉冲信号clk3。数码管及二极管循环显示时序控制程序:process(clk2)variable z:integer range 0 to 20;beginif clr='1' thens<="00000" -复位信号elseif clk'event and clk='1
17、'thenz:=z+1;if z=20then s<=s+1;s:=0;if s="10111" then s<="00000"else s<=s+1;end if;end if;end if;end if;end process;该段程序的目的是对clk2再进行一次分频,当clk2发生变化,并且变化为上升沿时,z就加1,直到加到为20时,s就发生变化,加1,每当s发生变化,加到30时,s就加1。当s从00000变化到1
18、0111时,就对s清零,从而实现数码显示管和发光二极管的循环显示,以达到显示速度的要求。发光二极管及数码管显示程序:process(s)begincase s iswhen "00000"=>led7s1<="0001000"led7s2<="01111111"speak<=clk1;led_selout<="11000000" when "00001"=>led7s1<="0001000&qu
19、ot;led7s2<="10111111"speak<=clk1;led_selout<="01100000" when "00010"=>led7s1<="0001000"led7s2<="11011111"speak<=clk1;led_selout<="00110000" when "00011"=>led7s1<="0001000"
20、;led7s2<="11101111"speak<=clk1;led_selout<="00011000" when "00100"=>led7s1<="0001000"led7s2<="11110111"speak<=clk1;led_selout<="00001100" when "00101"=>led7s1<="0001000"l
21、ed7s2<="11111011"speak<=clk1;led_selout<="00000110" When"00110"=>led7s1<="0001000"led7s2<="11111101"speak<=clk1;led_selout<="00000011" When "00111"=>led7s1<="0001000"led7s2<
22、;="11111110"speak<=clk1;led_selout<="10000001" 此段程序就是当敏感信号s发生变化,对数码管进行置位和置型,0001000也就是对相应的数码管使之显示花型为A,通过对数码管使能端的置位,控制显示的数码管显示为AA ,并且发光二极管最右边显示为亮。当S每变化一次,数码管向左移动一格,发光二极管也同步向左移动,每次只亮一个灯。当 s变化到00111之后执行下一段程序,同时扬声器发出声音。when "01000"=>led7s1<=&
23、quot;0000011"led7s2<="11111110"speak<=clk2;led_selout<="00000011" When "01001"=>led7s1<="0000011"led7s2<="11111101"speak<=clk2;led_selout<="00000110" When "01010"=>led7s1<=&qu
24、ot;0000011"led7s2<="11111011"speak<=clk2;led_selout<="00001100" when "01011"=>led7s1<="0000011"led7s2<="11110111"speak<=clk2;led_selout<="00011000" when "01100"=>led7s1<="
25、;0000011"led7s2<="11101111"speak<=clk2;led_selout<="00110000" When "01101"=>led7s1<="0000011"led7s2<="11011111"speak<=clk2;led_selout<="01100000" when "01110"=>led7s1<="0
26、000011"led7s2<="10111111"speak<=clk2;led_selout<="11000000" when "01111"=>led7s1<="0000011"led7s2<="01111111"speak<=clk2;led_selout<="10000001" 此段程序就是当敏感信号s发生变化至01000时,对数码管进行置位和置型,0000011也就是对相应的数码
27、管使之显示花型为B,通过对数码管使能端的置位,控制显示的数码管显示为BB ,并且发光二极管最左边显示为亮。当S每变化一次,数码管向右移动一格,发光二极管也同步向右移动,每次只亮一个灯。当 s变化到01111之后执行下一段程序,同时扬声器发出声音。when "10000"=>led7s1<="1000110"led7s2<="01111110"speak<=clk3;led_selout<="10000001" When"10001&qu
28、ot;=>led7s1<="1000110"led7s2<="10111101"speak<=clk3;led_selout<="01000010" When"10010"=>led7s1<="1000110"led7s2<="11011011"speak<=clk3;led_selout<="00100100" when "10011"=>
29、led7s1<="1000110"led7s2<="11100111"speak<=clk3;led_selout<="00011000" When"10100"=>led7s1<="1000110"led7s2<="11100111"speak<=clk3;led_selout<="00011000"When"10101"=>led7s1<="100
30、0110"led7s2<="11011011"speak<=clk3;led_selout<="00100100"when"10110"=>led7s1<="1000110"led7s2<="10111101"speak<=clk3;led_selout<="01000010" when "10111"=>led7s1<="1000110"led7
31、s2<="01111110"speak<=clk3;led_selout<="10000001" when others=>null;end case;end process;end;此段程序就是当敏感信号s发生变化至10000时,对数码管进行置位和置型,1000110也就是对相应的数码管使之显示花型为C,通过对数码管使能端的置位,控制显示的数码管显示为CC ,并且发光二极管最左边第一个和最右边第一个显示为亮。当S每变化一次,数码管向中间移动一格,发光二极管也同步中间移动,可以看到
32、由二边向中间移动再发散到二边的变化过程。当 s变化到10111之后执行再循环显示A花型,同时扬声器发出声音。第4章 波形仿真分析程序经过编译之后即可进行波形的仿真,为了方便观察显示结果,这里调节仿真时间为3us ,脉冲频率clk的周期为5ns,复位信号暂且不进行仿真.。执行Quartus软件中的processing-> start simulation选项,即可观察到波形仿真图像。如下图所示为显示花型AA的仿真结果。图2 花型A波形仿真图由图2可知,当clk发生变化,来上升沿时,led7s1为0001000即数码管首先显示为花型
33、A 二极管按规定的显示,首先led7s2位01111111即最右边的二极管亮灯,led_selout为11000000即最右边的2个数码管显示2个A的花型。当clk变化到规定次数时二极管的显示开始按左移动,数码显示管也向左移动。Led7s2依次变化0111111111111110,实现二极管的向左移动;led_selout也依次变化1100000000000011实现数码显示管的向左移动。同时当clk信号变化50次时产生一个上升沿clk1,控制扬声器发出声音。图3 花型BB的波形仿真图由图3可知,当clk发生变化,来上升沿时,led7s1为0000011即数码管首先显示为花
34、型B二极管按规定的显示,首先led7s2位11111110即最右边的二极管亮灯,led_selout为00000011即最右边的2个数码管显示2个B的花型。当clk变化到规定次数时二极管的显示开始向右移动,数码显示管也向右移动。Led7s2依次变化1111111001111111,实现二极管的向右移动;led_selout也依次变化0000001111000000实现数码显示管的向右移动。同时当clk信号变化25次时产生一个上升沿clk2,控制扬声器发出声音。图4 花型C的波形仿真图由图4可知 当clk发生变化,来上升沿时,led7s1为1000110即数码管首先显示为花型
35、C二极管按规定的显示,首先led7s2位01111110即最右边和最右边的二极管亮灯,led_selout为10000001即最右边和最左边的2个数码管显示2个C的花型。当clk变化到规定次数时二极管的显示开始向中间移动,数码显示管中的花型也向中间移动,然后再由中间向俩边移动。Led7s2依次变化011111101110011101111110,实现二极管的向中间移动再向俩边移动;led_selout也依次变化100000010001100010000001实现数码显示管的向中间再向俩边移动。同时当clk信号变化8次时产生一个上升沿clk3,控制扬声器发出声音。第5章 硬件测试波形仿
36、真完成之后即可进行引脚的分配,并进行编程下载至硬件进行测试。在Quartus 中选择Assignments->Assignments Editor,在Assignments Editor窗口中选择pin标签页,即可分配引脚,引脚的分配情况如图5所示。图5 引脚分配图如上图所示,在实验过程中clk的引脚选择J16即可外接频率源,实验过程中选择的频率为1KHZ。其余数码管和二极管以及8个数码管的使能端引脚分配见上图,复位键引脚T10对应的按键。选择process->start compilation,重新编译,完成后形成可配置到FPGA的pan.sof文件和配置到外部的pan.pof文件。编程下载,在quartus软件中,选择tools/programmer,在Mode中选择J
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中职幼儿保育(幼儿行为观察)试题及答案
- 2025年中职会计学(会计学概论)试题及答案
- 2025年中职计算机应用(计算机应用技术)试题及答案
- 2025年高职地图数据标题转换技术(标题转换实操)试题及答案
- (正式版)DB21∕T 20008-2024 《滑雪场所巡查救助人员管理规范》
- (16区全套) 上海市16区2026届初三一模化学试卷合集(含答案)
- 2026安徽蚌埠市固镇县杨庙镇面向全县选聘村党组织书记后备力量4人备考题库及答案详解(夺冠系列)
- 晚安问候话术
- 四川省绵阳市盐亭县2025-2026学年八年级上学期1月期末语文试题
- 2025-2026学年第一学期广东省深圳市龙岗区高三期末历史测试题(二)(含答案)
- (正式版)DB51∕T 2732-2025 《用材林培育技术规程 杉木》
- 八年级下册 第六单元写作 负责任地表达 教学课件
- 美容院2025年度工作总结与2026年发展规划
- 26年三上语文期末密押卷含答题卡
- 2026届云南省昆明市西山区民中数学高一上期末考试模拟试题含解析
- 2025-2030乌干达基于咖啡的种植行业市场现状供需分析及投资评估规划分析研究报告
- 2026年共青团中央所属单位招聘66人备考题库及答案详解一套
- 人民警察法培训课件
- 小糖人课件:糖尿病患者儿童糖尿病的护理
- 小猫绝育协议书
- 2025年12月福建厦门市鹭江创新实验室管理序列岗位招聘8人备考题库必考题
评论
0/150
提交评论