版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、可控脉冲发生器的设计一、设计目的1. 了解可控脉冲发生器的实现机理。2. 学会用示波器观察FPGA产生的信号。3. 学习用VHDL编写复杂功能的代码。二、设计原理1. EDA是电子设计自动化(Electronic Design Automation)的缩写。EDA技术就是依赖功能强大的计算机,在 EDA工具软件 平台上,对以硬件描述语言 HDL (Hardware Description Language) 为系统逻辑描述手段完成的设计文件,自动地完成逻 辑编译、化简、分割、综合、布局布线以及逻辑优化和仿真测试, 直至实现既定的电子线路系统功能。EDA技术使设计者的工作仅 局限于利用软件的方式
2、来完成对系统硬件功能的实现,可以说 EDA技术的产生与发展是电子设计技术的一个巨大进步。EDA技术融合了众多电子设计技术和计算机辅助技术, 使得它在现代电 子学方面的应用越来越广泛, 也成为电子、电气类大学生必须熟 练掌握的一种设计工具。2. VHDL是英文全名是 VHSIC(Very High Speed IntegratedCircuit) Hardware Description Language, 是硬件描述语言的 业界标准之一。VHDL语言功能强大、设计灵活。VHDL语言可以用简洁明确的源代码来描述复杂的逻辑控制,它具有多层 次的设计描述功能,层层细化,最后可直接生成电路级描述。VH
3、DL支持同步电路、异步电路和随机电路的设计,这是 其他硬件描述语言虽不能比拟的。VHDL还支持多种设计方法,既支持自底向上的设计,又支持自顶向下的设计;既支持模 块化设计,又支持层次化设计。由于VHDL已经成为IEEE标准所规定的硬件描述性语言, 目前大多数EDA工具几乎都支持 VHDL因为VHDL易读和结 构化且易于修改设计所以在硬件电路设计过程中,VHDL语言得到广泛应用。VHDL语言易于共享和复用。VHDL采用基于库(Library ) 的设计方法,可以建立各种可再次利用的模块。这些模块可 以预先设计或使用以前设计中的存档模块,将这些模块存放 到库中,就可以在以后的设计中进行复用,可以使
4、设计成果 在设计人员之间进行交流和共享,减少硬件电路设计。VHDL丰富的仿真语句和库函数,使得在任何大系统的设 计早期就能查验设计系统的功能可行性,随时可对设计进行 仿真模拟。VHDL语句的行为描述能力和程序结构决定了它具 有支持大规模设计的分解和已有设计的再利用功能。这个特 点很好的符合了市场需求。对于用VHDL完成的一个确定的设 计,可以利用EDA工具进行逻辑综合和优化, 并自动的把 VHDL 描述的设计转变成门级网表。总之,由于VHDL语言有的这些优良的特点,它被广泛的应用在电子线路和电子系统的设计 中。3. Quartus II是Altera 公司的综合性 PLD/FPGAT发软件,支
5、持原理图、 VHDL、VerilogHDL 以及 AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合 器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。Quartus II 可以在 XP、Linux 以及 Unix 上使用,除了可以使用 Tcl 脚本完成设计流程外, 提供了完善的用户图形界面设计 方式。具有运行速度快, 界面统一, 功能集中,易学易用等特点。Quartus II 支持 Altera 的 IP 核,包含了 LPM/MegaFunction 宏功能模块库, 使用户可以充分利用成熟的模块,简化了设计的
6、复杂性、加快了设计速度。对第三方 EDA工具的良好支持也使用 户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。此外, Quartus II 通过和 DSPBuilder 工具与 Matlab/Simulink相结合,可以方便地实现各种 DSP应用系统;支持Altera的片 上可编程系统(SOPC开发,集系统级设计、嵌入式软件开发、 可编程逻辑设计于一体,是一种综合性的开发平台。4. 脉冲发生器就是要产生一个脉冲波形,而可控脉冲发生器 则是要产生一个周期和占空比可变的脉冲波形。 可控脉冲发生器 的实现原理比较简单, 可以简单的理解为一个计数器对输入的时 钟信号进行分频的过程。 通过改变计数
7、器的上限值来达到改变周 期的目的,通过改变电平翻转的阈值来达到改变占空比的目的。 下面举个简单的例子来说明其工作原理。假如有一个计数器T对时钟分频,其计数的范围是从 0N,另取一个M(0< M N),若输出为Q那么Q只要满足条件0 汀:::M M <T < N时,通过改变N值,即可改变输出的脉冲波的周期;改变 M值, 即可改变脉冲波的占空比。这样输出的脉冲波的周期和占空比分别为:周期=(N - 1)Tclock 占空比M100%N +1三、设计内容编写实现可控脉冲发生器程序,通过脉冲周期和占空比改变 实现不同脉冲的输出。用Quartusll软件对设计进行编译、综合、 仿真,给
8、出相应的时序仿真波形和硬件电路图。四、设计流程1. 程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CC ISPORT( CLK: IN STD_LOGIC; - 时钟输入RST : IN STD_LOGIC; - 复位输入NU,ND : IN STD_LOGIC; - 输入:控制频率的改 变MU,MD : IN STD_LOGIC; - 输入:控制占空比的 改变FOUT : OUT STD_LOGIC - 波形输出);E
9、ND CC;ARCHITECTURE BEHAVE OF CC ISSIGNAL N_BUFFER,M_BUFFER:STD_LOGIC_VECTOR(10 DOWNTO 0);SIGNAL N_COUNT :STD_LOGIC_VECTOR(10 DOWNTO 0);SIGNAL CLKIN : STD_LOGIC;SIGNAL CLK_COUNT : STD_LOGIC_VECTOR(12 DOWNTO0); - 产生一个低速时钟,用于按键判断BEGINPROCESS(CLK) - 计数器累加BEGINIF(CLK'EVENT AND CLK='1') THENIF
10、(N_COUNT=N_BUFFER)THENN_COUNT<="00000000000"ELSEN_COUNT<=N_COUNT+1;END IF;END IF;END PROCESS;PROCESS(CLK) - 波形判断BEGINIF(CLK'EVENT AND CLK='1') THENIF(N_COUNT<N_BUFFER)THENFOUT<='1'ELSIF(N_COUNT>M_BUFFER AND N_COUNT<N_BUFFER)THENFOUT<='0'END
11、IF;END IF;END PROCESS;PROCESS(CLK)BEGINIF(CLK'EVENT AND CLKIN='1') THENCLK_COUNT<=CLK_COUNT+1;END IF;CLKIN<=CLK_COUNT(12);END PROCESS;PROCESS(CLKIN) - 频率及占空比的改变 1BEGINIF(CLK'EVENT AND CLKIN='0') THENIF(RST='0') THENM_BUFFER<="01000000000"N_BUFFER<
12、;="10000000000"ELSIF(NU='0')THENN_BUFFER<=N_BUFFER+1;ELSIF(ND='0') THENN_BUFFER<=N_BUFFER-1;ELSIF(MU='0')THENM_BUFFER<=M_BUFFER+1;ELSIF(MD='0') THENM_BUFFER<=M_BUFFER-1;END IF;END IF;END PROCESS;END BEHAVE;2. 管脚分配:DrecbonLocMiorkVO Bank1g OkIjnpu
13、tPINJ.122> FourO/pc/tPINJBH411> MOIqxxPW.M1l4” MJtnpRZPIN/CIsl>他p ;! jtPIN JLI1Z8&1> MJinputPINJJll871> RstErpdtP1N.B333. 时序仿真图:* -T 1 1 -E-l a nej 1 rinH 1 rlu- akD l/一l/-lf- J -Ir-lr一卩-酗HDHUFoo:rHOLHOrrHO皿讪恤帧恤皿i伽!mmramIIIIIIiiIIIIIIIIIIAimnm a rjan 厂n_ mJLMA_RTT<nnL_R<L mL
14、imiRLTI1I4. 硬件电路图:6£6軸C z m 5.现象:J2Niorn EJI五、心得体会通过这次EDA课程设计,我对课堂上所学到的理论知识的理解加深了许多,自己动脑、动手设计的能力也得到了较大提高。在这次课程设计的过程中,我对VHDL语言有了更深的认识。 通过查阅相关资料和动手设计我发现我以前对 VHDL语言的认识 太过肤浅,认为VHDL语言只能用于设计小型的电路系统。但有 了更深刻的认识之后我发现学好 VHD语言可以设计出大规模的、 功能复杂的电路系统。 以前之所以会有错误的认识是因为自己对 VHDL语言的了解和掌握还不够。现在仔细想想,这次课程设计使 得我对VHDL语
15、言的理解与应用能力得到了较大的提升,也让我 认识到只要升入学习,提升的空间永远的存在的。另一方面我也发现了动手实践的重要性。 动手实践是理论知 识得以灵活运用的必要前提, 也是今后今后走上工作岗位之后能 够很好的完成设计工作的技术保证。 只有遇到实际问题并根据自 己对课堂上获得的专业知识的理解来解决它才能真正的提高自 己的能力。这也提醒我在平时的学习生活中不能一味埋头于课本 知识,当今社会竞争越来越激烈, 社会对人才的要求越来越全面, 只有理论知识是远远不够的, 必须靠动手能力做支撑。因此在学 习之余我们应该积极参加各种与专业知识有关的实践活动和知 识竞赛,巩固所学的理论知识,多注重培养实际动
16、手能力和专业 技术能力,这样才能在以后的工作岗位上有所作为。数字秒表设计一、设计目的本设计的任务就是设计一个数字钟, 要求显示格式为小时 分钟秒钟。系统时钟选择时钟模块的 50MHz要得到1Hz时钟 信号,必须对系统时钟进行50000000次分频。用S1按键作为系 统时钟复位,复位后全部显示 00 00 00。二、设计原理数码管的八个段 a,b,c,d,e,f,g,h (h 是小数点)都分别连 接到SEG0SEG78个数码管分别由八个选通信号 DIG0DIG7来 选择,被选通的数码管显示数据,其余关闭。如果希望 8个数码 管显示希望的数据,就必须使得8个选通信号DIG0DIG7分别被 单独选通
17、,并在此同时,在段信号输入口 SEG0SEG加上该对应 数码管上显示的数据, 于是随着选通信号的扫描就能实现动态扫 描显示的目的。 虽然每次只有 1 个数码管显示, 但只要扫描显示 速率足够快,利用人眼的视觉余辉效应,我们仍会感觉所有的数 码管都在同时显示。三、设计主要内容本设计要求掌握使用 QuartusII 设计数字系统的设计思路和 设计方法。学习VHDL基本逻辑电路的综合设计应用。掌握 VHDL 语言的语法规范, 掌握时序电路描述方法。掌握多个数码管动态 扫描显示的原理及设计方法。设计一个由共阴八位数码管作为显示、按键作为控制系统的 数字钟电路,要求利用实验室设备完成系统设计并运行调试四
18、、设计流程1. 程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity stopwatch isport( Clk :instd_logic;- 时钟输入reset :instd_logic;- 复位输入start,over :instd_logic;- 秒表控制输入ledag:out std_logic_vector(6 downto0); - 七段码管显示输出SEL: bufferstd_logic_vector(2down
19、to 0) - 七段码管扫描驱动);end stopwatch;architecture behave of stopwatch issignal Disp_Temp signal Disp_Decode signal mSEC1,mSEC10 signal SEC1,SEC10 signal MIN1,MIN10 signal HOUR1,HOUR10integer range 0 to 15; std_logic_vector(6 downto 0); : integer range 0 to 9;integer range 0 to 9;: integer range 0 to 9;:
20、integer range 0 to 9;signal Clk1kHz signal Clk100Hz signal Start_Flag signal Music_Count: std_logic;: std_logic;: std_logic;: std_logic_vector(2 downto 0);beginPROCESS(clk) -generate 100hz clock signalvariable cnt : INTEGER RANGE 0 TO 499999;- 产生 100Hz 时钟的分频计数器BEGINIF clk='1' AND clk'eve
21、nt THENIF cnt=499999 THEN cnt:=0;ELSEIF cnt<250000 THEN clk100hz<='1'ELSE clk100hz<='0'END IF;cnt:=cnt+1;END IF;END IF;END PROCESS;PROCESS(clk) -generate 1khz clock signalvariable cnt1 : INTEGER RANGE 0 TO 49999;- 产生 1kHz 时钟的分频计数器BEGINIF clk='1' AND clk'event THE
22、NIF cnt1=49999 THEN cnt1:=0;ELSEIF cnt1<25000 THEN clk1khz<='1'ELSE clk1khz<='0'END IF;cnt1:=cnt1+1;END IF;END IF;END PROCESS;process(Clk100Hz)beginif(reset='0') then- 系统复位mSEC1<=0;mSEC10<=0;SEC1<=0;SEC10<=0;MIN1<=0;MIN10<=0;HOUR1<=0;HOUR10<=0
23、;Start_Flag<='0'elsif(start='0' and Start_Flag='0') thenStart_Flag<='1'elsif(over='0' and Start_Flag='1') thenStart_Flag<='0'elsif(Clk100Hz'event and Clk100Hz='1') then - 正常运行if(Start_Flag='1') thenif(mSEC1=9) thenm
24、SEC1<=0;if(mSEC10=9) thenmSEC10<=0;if(SEC1=9) thenSEC1<=0;if(SEC10=5) thenSEC10<=0;if(MIN1=9) thenMIN1<=0;if(MIN10=5) thenMIN10<=0;if(HOUR1=9) thenHOUR1<=0; if(HOUR10=9) then HOUR10<=0;elseHOUR10<=HOUR10+1;end if;elseHOUR1<=HOUR1+1; end if; elseMIN10<=MIN10+1;end if;
25、elseMIN1<=MIN1+1; end if;elseSEC10<=SEC10+1; end if;elseSEC1<=SEC1+1; end if;else mSEC10<=mSEC10+1;end if;else mSEC1<=mSEC1+1;end if;end if;end if;end process;process(SEL)beginif(HOUR1=0) thencase (SEL+1) iswhen "111"=>Disp_Temp<=mSEC1;when "110"=>Disp_Tem
26、p<=mSEC10;when "101"=>Disp_Temp<=10;when "100"=>Disp_Temp<=SEC1;when "011"=>Disp_Temp<=SEC10;when "010"=>Disp_Temp<=10;when "001"=>Disp_Temp<=MIN1;when "000"=>Disp_Temp<=MIN10;end case;elsecase (SEL+1)
27、 iswhen "111"=>Disp_Temp<=SEC1;when "110"=>Disp_Temp<=SEC10;when "101"=>Disp_Temp<=10;when "100"=>Disp_Temp<=MIN1;when "011"=>Disp_Temp<=MIN10;when "010"=>Disp_Temp<=10;when "001"=>Disp_Temp&
28、lt;=HOUR1;when "000"=>Disp_Temp<=HOUR10;end case;end if;end process;process(Clk1khz)beginif(Clk1khz'event and Clk1khz='1') then - 扫描 累加SEL<=SEL+1;ledag<=Disp_Decode;end if;end process;process(Disp_Temp) - 显示转换begincase Disp_Temp iswhen 0=>Disp_Decode<= "0
29、111111"-0when 1=>Disp_Decode<="0000110"-1when 2=>Disp_Decode<= "1011011"-2when 3=>Disp_Decode<="1001111"-3when 4=>Disp_Decode<="1100110"-4when 5=>Disp_Decode<= "1101101"-5when 6=>Disp_Decode<= "1111101&qu
30、ot;-6when 7=>Disp_Decode<= "0000111"-7when 8=>Disp_Decode<= "1111111"-8when 9=>Disp_Decode<="1101111"-9when 10=>Disp_Decode<= "1000000" when others=>Disp_Decode<="0000000" 全灭end case;end process; end behave;2.管脚分配:I'bde NarreDhcbonLratanIJOBankWQopl/05tfl(idardLInputP1N L1BJJJl3,>H/TTi(defaJt)z_尬 led6OiputmmTB2 N03.3-VLVTTL(dait)3OutputF1N.M52BZJfl3,HVTTL(defdt)4* Ieddi40就卩止WN.H62B2.N03.3-lfLVTTL(defajt)5神窗OutputF'N M2B2.N13.3-VLVTTL(yait)&4* 两2OutputPR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《电脑棋手》课件
- 《远山如黛》少儿美术教育绘画课件创意教程教案
- 课程分享 课件
- 西南林业大学《比较文学概论》2021-2022学年第一学期期末试卷
- 西京学院《网络数据库》2021-2022学年期末试卷
- 西京学院《建筑设备》2021-2022学年第一学期期末试卷
- 2024年教师系列中高级职称评审有关政策解读附件10
- 西京学院《国际结算与贸易融资》2022-2023学年第一学期期末试卷
- 西京学院《单片机原理及应用》2022-2023学年期末试卷
- 西华师范大学《中小学综合实践活动》2023-2024学年第一学期期末试卷
- 幼儿园音乐活动的设计与组织课件
- 碳酸二甲酯安全技术说明书(msds)
- 黑色渐变文明交通安全出行中学生交通安全教育课PPT模板
- 第7章散客旅游服务程序与服务质量《导游业务》(第五版)
- 后续服务的安排及保证措施
- 学习通《古典诗词鉴赏》习题(含答案)
- 维吾尔族的传统文化课件
- 异物管控记录表
- 内蒙古自治区通辽市各县区乡镇行政村村庄村名居民村民委员会明细及行政区划代码
- 小学安全课件《按章行路才安全》
- 《游子吟》教学反思
评论
0/150
提交评论