VHDL课程设计报告
VHDL课程设计
《VHDL语言》课程设计报告四路抢答计时器班级:学号:姓名:设计日期:2008年12月15日至2008年12月26日第1章课程设计概述1.1设计目的本次设计的目的就是在掌握MAX+plus II实验开发系统的初步使用基础上,了解并掌握VHDL硬件描述语言的设计方法和思想,使自己能将已学过的数字电子系统设计、VHDL 程序设计等知识综合运用于电子系统的设计中,掌握运用VHDL 设计电子系统的流程和方法,加强和培养自己对电子系统的设计能力。
任务是通过二周的时间,基本掌握EDA的基本方法,熟悉一种EDA软件(MAX+plus II),并能利用EDA软件设计一个电子技术综合问题。
通过学习的VHDL语言结合电子电路的知识理论联系实际,掌握所学的课程知识,学习基本单元电路的综合设计应用通过对四路抢答计时器的设计,巩固和综合运用所学的课程,摆脱一维的思维模式,以多维并发的思路来完成VHDL 的程序设计。
目前市场上已有各种各样的抢答器, 但绝大多数是早期设计的, 以模拟电路、数字电路或者模拟电路与数字电路相结合的产品。
这部分抢答器已相当成熟, 但功能越多的电路相对来说就越复杂, 且成本偏高, 故障高, 显示方式简单( 有的甚至没有显示电路) , 无法判断提前抢按按钮的行为, 不便于电路升级换代。
而与非门和非门后的反馈信号的高电平作为解锁存,用555定时器的模型来倒计时,同时以脉冲信号来控制加法器和减法器来控制抢答过程中的计分,应用二极管和数码显示管为主要部件来设计扫描显示器则降低了其复杂性、高故障性以及显示方式简单的问题。
通过课程设计深入理解VHDL语言的精髓和掌握运用所学的知识,达到课程设计的目标。
1.2 设计内容通过VHDL程序设计一个4人参加的智力竞赛抢答计时器,当有某一参赛者首先按下抢答开关时,相应显示灯亮并伴有声响,此时抢答器不再接受其他输入信号。
电路具有回答问题时间控制功能。
要求回答问题时间小于等于100s(显示为0~99),时间显示采用倒计时方式。
vhdl课程设计实验报告
湖南科技大学信息与电气工程学院《课程设计报告》题目:电子技术课程设计报告专业:通信工程班级:一班姓名:何家乐学号: 1004040126指导教师:罗朝辉任务书题目《电子技术》课程设计时间安排课程设计时间为10天(2周)。
(1)调研、查资料1天。
(2)总体方案设计2 天。
(3)电路设计2天(画原理图,参数计算)。
(4)实验室完成相应电路的验证。
3天(5)撰写设计说明书 1 天。
(6)验收1 天。
目的:训练学生综合运用学过的电子技术原理的基础知识,独立进行查找资料、选择方案、设计电路、撰写报告,进一步加深对电子电路基本理论的理解,提高运用基本技能的能力,为今后的学习和工作打下坚实的基础。
要求:(1)能正确设计电路,画出线路图,分析电路原理。
(2)按时参加课程设计指导,定期汇报课程设计进展情况。
(3)广泛收集相关技术资料。
(4)独立思考,刻苦钻研,严禁抄袭。
(5)按时完成课程设计任务,认真、正确地书写课程设计报告。
(6)培养实事求是、严谨的工作态度和认真的工作作风。
总体方案实现:(1)明确设计任务,对所要设计的任务进行具体分析,充分了解电路性能、指标内容及要求。
(2)制定设计方案。
(3)迸行具体设计:单元电路的设计;参数计算;器件选择;绘制电路原理图。
(4)撰写课程设计报告(说明书):课程设计报告是对设计全过程的系统总结,也是培养综合科研素质的一个重要环节。
指导教师评语:评分等级:()指导教师签名:课程设计报告1.课题名称:RGB LED Control 原理图及PCB设计2.设计任务及要求⑴任务:完成RGB LED control 的设计,并画出原理图及其PCB设计。
⑵要求:①能正确设计电路,画出线路图,分析电路原理。
②按时参加课程设计指导,定期汇报课程设计进展情况。
③广泛收集相关技术资料。
④独立思考,刻苦钻研,严禁抄袭。
⑤按时完成课程设计任务,认真、正确地书写课程设计报告。
⑥培养实事求是、严谨的工作态度和认真的工作作风。
VHDL软件设计报告
通信与信息工程学院软件设计VHDL实验报告南京邮电大学课程设计报告设计类别: EDA-VHDL专业名称: 电子信息工程班级学号: B08021717 学生姓名: 付祥旭基本题 : 数字时钟设计综合题 : 数码管学号动态显示同小组成员:学号:姓名:曾大千指导教师: 王奇、梅中辉、周晓燕、孔凡坤日期:2011年9月1日—9月21日第一章软件设计介绍一、各类设计环节的性质、目的与任务本课程设计是一门重要的专业基础实践课,是《现代电子技术》或《EDA技术》等课程的后续实践课程,未选前述课程的要求学生具备数字电路和C语言的基础。
本课程设计的目的和任务:1.使学生全面了解如何应用该硬件描述语言进行高速集成电路设计;2.通过软件设计环节与仿真环节使学生熟悉Quartus II设计与仿真环境;3. 通过对基本题、综合题的设计实践,使学生掌握硬件系统设计方法(自底向上或自顶向下),熟悉VHDL语言三种设计风格,熟悉其芯片硬件实现的过程。
二、实验内容软件设计课题共分基本课题、综合课题两档。
基本课题2题,12个学时完成;综合课题共4题,20个学时完成。
四、考核办法学生软件设计成绩考核来源于以下方面:考勤及工作态度(占10%)软件设计报告(占40%)验收情况(占50%)五、主要设备微型计算EDA-VHDL开发软件(QUARTUS2)ALtera CPLD硬件实验开发系统第二章软件开发平台简介1 Quartus II简介Quartus II 提供了完整的多平台设计环境,能满足各种特定设计的需要,也是单芯片可编程系统(SOPC)设计的综合性环境和SOPC开发的基本设计工具。
Quartus II 设计工具完全支持VHDL、Verilog的设计流程,其内部嵌有VHDL、Verilog逻辑综合器。
Quartus II 具备仿真功能,同时也支持第三方的仿真工具,如Modelsim。
Quartus II 包括模块化的编译器。
编译器包括的功能模块有分析/综合器(Analysis & Synthesis)、适配器(Fitter)、装配器(Assembler)、时序分析器(Timing Analyzer)、设计辅助模块(Design Assistant)、EDA网表文件生成器(EDA Netlist Writer)、编辑数据接口(Compiler Database Interface)等。
vhdl课程设计报告
一、设计目的本课程设计的目的是熟练掌握相关软件的使用和操作。
能对VHD1语言程序进行编译,调试,以及通过计算机仿真,得到正确的仿真波形图,并根据所得仿真波形图分析判断并改进所设计的电路。
在成功掌握软件操作基础上,将所数字电路的基础课知识与VHD1语言的应用型知识结合起来并与实际设计,操作联系起来,即“理论联系实际:深入了解VHD1语言的作用与价值,对用硬件语言设计一个电路系统开始具备一个较完整的思路与较专业的经验。
对EDA技术有初步的认识,并开始对EDA技术的开发创新有初步的理解。
二、设计内容及操作1、设计循环彩灯控制器1.1设计内容设计一个循环彩灯控制器,该控制器控制红,绿,黄三个发光管循环点亮。
要求红发光管亮3秒,绿发光管亮2秒,黄发光管亮1秒。
1.2程序设计1IBRARYIEEE;USEIEEE.STD_10GIC_1164.A11;USEIEEE.STD_1OGIC_UNSIGNED.A11;ENTITYcaideng_2ISPORT(e1k:INSTD_1OGIC;red,green,ye11ow:OUTSTD1OGIC);ENDENTITYCaideng_2;ARCHITECTUREexamp1eOFcaideng_2ISSIGNA1dout:STD_1OGIC_VECTOR(2DoWNTO0);SIGNA1m:STD_10GIC_VECT0R(2DOWNTO0);BEGINred<=dout(2);green<=dout(1);ye11ow<=dout(0);PROCESS(e1k)ISBEGINIF(c1k,EVENTANDC1k=T')THENIF(In="110")THENm<="001";E1SEm<=m+1;ENDIF;CASEmISWHEN"001"=〉dout<=〃100〃;WHEN"010"=>dout<=T00";WHEN,/0ir=>dout<="100";WHEN"100"=>dout<="010";WHEN"101"=>dout<="010";WHEN"110"=>dout<="001";WHENOTHERS=>dout<="000";ENDCASE;ENDIF;ENDPROCESS;ENDARCHITECTURE;1.3仿真波形图14波形图分析在仿真时已经设置好开始时间和结束时间,根据以上的波形图可知,当e1k 信号处于高电平(高低电平可以根据自己所设计的情况自己定义),红发光管最先亮灯(高电平表示亮灯),时间为3s,3s之后绿发光管开始亮灯2s,2s结束黄发光管亮1s,以此循环亮灯,直到仿真结束时间。
vhdl课程设计模板
vhdl课程设计模板一、教学目标本课程的教学目标是使学生掌握VHDL(Very High Speed Integrated Circuit Hardware Description Language)的基本语法、编程技巧和设计方法,培养学生进行数字电路设计的实践能力。
具体目标如下:1.知识目标:–理解VHDL的基本概念、语法和规则;–掌握VHDL编程技巧,包括信号声明、实体描述、架构声明、端口映射、过程声明等;–了解数字电路的设计方法和流程,包括逻辑分析、模块划分、代码编写、仿真测试等。
2.技能目标:–能够使用VHDL编写简单的数字电路模块,如加法器、乘法器、计数器等;–能够进行数字电路的仿真测试,分析电路的功能和性能;–能够进行数字电路的硬件实现,使用FPGA或ASIC器件进行电路调试和验证。
3.情感态度价值观目标:–培养学生的创新意识和团队合作精神,鼓励学生进行自主设计和协作开发;–培养学生对电子工程领域的兴趣和热情,提高学生对数字电路设计的认识和理解。
二、教学内容根据教学目标,本课程的教学内容主要包括VHDL基本语法、编程技巧和数字电路设计方法。
教学大纲如下:1.VHDL基本语法:–信号声明和实体描述;–架构声明和端口映射;–过程声明和组合逻辑设计;–循环语句和条件语句;–子程序调用和参数传递。
2.VHDL编程技巧:–编写简单的数字电路模块,如加法器、乘法器、计数器等;–使用仿真工具进行电路仿真测试,分析电路的功能和性能;–使用硬件描述语言进行数字电路的硬件实现,使用FPGA或ASIC器件进行电路调试和验证。
3.数字电路设计方法:–逻辑分析和模块划分;–代码编写和模块集成;–仿真测试和硬件实现;–电路调试和性能优化。
三、教学方法为了达到教学目标,本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。
1.讲授法:教师通过讲解VHDL的基本语法、编程技巧和设计方法,引导学生掌握相关知识;2.讨论法:学生分组进行讨论,分享学习心得和设计经验,促进学生之间的交流和合作;3.案例分析法:分析典型的数字电路设计案例,让学生了解实际应用中的设计方法和技巧;4.实验法:学生动手进行数字电路设计,使用仿真工具进行电路仿真测试,提高学生的实践能力。
vhdl设计实验报告
vhdl设计实验报告VHDL设计实验报告引言VHDL(Very High Speed Integrated Circuit Hardware Description Language)是一种硬件描述语言,广泛应用于数字电路设计和验证。
本实验旨在通过设计一个简单的电路来熟悉VHDL语言的基本语法和设计流程。
一、实验背景数字电路是现代电子系统的基础,而VHDL则是描述和设计数字电路的重要工具。
VHDL可以帮助工程师们以一种形式化的语言来描述电路的功能和结构,从而实现电路的模拟和验证。
二、实验目的本实验的目的是通过使用VHDL语言设计一个简单的电路,加深对VHDL语言的理解,并掌握基本的电路设计流程。
三、实验步骤1. 确定电路功能在设计电路之前,首先需要明确电路的功能。
本实验中,我们选择设计一个4位加法器电路。
2. 设计电路结构根据电路功能的要求,设计电路的结构。
在本实验中,我们需要设计一个4位加法器,因此需要使用4个输入端口和一个输出端口。
3. 编写VHDL代码使用VHDL语言编写电路的描述代码。
在代码中,需要定义输入和输出端口的类型和位宽,并实现电路的功能。
4. 进行仿真使用仿真工具对设计的电路进行仿真,以验证电路的功能是否符合预期。
通过输入不同的测试数据,观察输出是否正确。
5. 下载到FPGA开发板将设计好的电路代码下载到FPGA开发板上进行验证。
通过连接输入信号和观察输出信号,验证电路在实际硬件上的运行情况。
四、实验结果与分析经过仿真和实际验证,我们设计的4位加法器电路在功能上符合预期。
输入不同的数据进行加法运算时,输出结果都正确。
五、实验总结通过本次实验,我们深入了解了VHDL语言的基本语法和设计流程。
通过设计一个简单的电路,我们掌握了VHDL的应用方法,并通过仿真和实际验证,加深了对电路设计的理解。
六、实验心得本实验让我对VHDL语言有了更深入的认识。
通过实际操作,我更加熟悉了VHDL的编写和仿真流程。
VHDL与数字电路设计实验报告
VHDL与数字电路设计实验报告引言本实验旨在通过使用VHDL编程语言和数字电路设计技术,实现特定功能的电路设计。
本文档将对实验的步骤、设计原理和结果进行详细描述。
实验步骤1. 步骤一:熟悉VHDL编程语言在实验开始之前,团队成员对VHDL编程语言进行了研究和熟悉。
我们了解了VHDL的基本语法、数据类型和结构,并获得了对VHDL设计原理的初步理解。
2. 步骤二:设计功能电路在本实验中,我们选择了一个特定的功能电路进行设计。
我们首先进行了功能需求分析,并根据需求确定了电路的输入输出信号以及主要的逻辑运算。
然后,我们使用VHDL编程语言将电路的逻辑运算实现为代码,并进行了仿真和测试。
3. 步骤三:电路仿真和验证为了验证我们设计的电路功能的正确性,我们使用了VHDL仿真工具进行了电路的仿真和验证。
我们根据输入信号的不同组合,观察输出信号的变化,并与我们预期的结果进行比较。
通过这一步骤,我们确认了我们设计的电路能够按照预期工作。
4. 步骤四:电路实现和测试在确认电路的设计和仿真结果无误之后,我们进一步将电路实现到实际的数字电路平台上,并进行了硬件测试。
我们使用实际的输入信号来测试电路的性能和稳定性,并对输出信号进行观察和分析。
通过这一步骤,我们验证了电路在实际环境中的可行性。
设计原理我们设计的电路基于特定的功能需求,采用了经典的数字电路设计原理。
通过使用VHDL编程语言,我们将电路的逻辑运算实现为逻辑门和触发器的组合。
通过将输入信号连接到适当的逻辑门和触发器,我们实现了所需的功能。
结果与分析经过实验步骤的完成,我们成功地设计和实现了一个具有特定功能的数字电路。
在仿真测试和实际测试中,电路都表现出了良好的性能和稳定性。
根据结果的分析,我们验证了电路的设计原理和逻辑的正确性。
结论本实验通过使用VHDL编程语言和数字电路设计技术,成功地实现了一个具有特定功能的电路设计。
我们的实验结果表明,VHDL和数字电路设计技术在电路设计领域具有重要的应用价值。
VHDL实验报告
EDA课程设计项目——数字钟学院:机电工程学院专业年级:07级电子科学与技术学号:学生姓名:指导老师:成绩评定:数字钟设计1、课程设计目的1、熟悉和掌握VHDL模块间的组合设计思路了解数字钟的工作原理2、掌握各芯片的逻辑功能及使用方法。
3、了解数字钟的组成及工作原理。
4、熟悉数字钟的设计与制作。
5、掌握常用仪器、仪表的正确方法,学会电路整机指标的测试6、巩固和加深学生对模拟电子技术,数字逻辑电路等课程基本知识的理解。
2、课程设计内容基本要求:1. 设计一个按HH:MM:SS(六位七段LED)显示的24小时制数字钟。
2.通过三个按键能够实现复位和校对时间的功能。
3、设计条件硬件:利用PC设计软件:MAX+PLUS2实验总原理图4、设计思路:过一个数据选择器和一个3-8译码器分别控制数码管的段选和位选实现数码管的动态扫描。
5、设计步骤:设计步骤:1、24进制计数器的vhdl语言编译、仿真程序如下:LIBRARY IEEE;USE IEEE.std_logic_1164.ALL;USE IEEE.std_logic_unsigned.ALL;ENTITY jjsqh ISPORT(rest,clk:IN std_logic;co:OUT std_logic;qh,ql:BUFFER std_logic_vector(3 DOWNTO 0));END jjsqh;ARCHITECTURE one OF jjsqh ISBEGINco<='1'WHEN(ql="1001"AND qh="0101")ELSE'0';PROCESS(clk,rest)BEGINIF(rest='0')THENql<="0000";qh<="0000";ELSIF(clk'EVENT AND clk='1')THEN IF(ql =3)THEN ql<="0000";IF(qh =2)THEN qh<="0000";ELSE qh<=qh+1;END IF;ELSE ql<=ql+1;END IF;END IF;END PROCESS;END one;2、60进制计数器的vhdl语言编译、仿真程序如下:LIBRARY IEEE;USE IEEE.std_logic_1164.ALL;USE IEEE.std_logic_unsigned.ALL;ENTITY jsqm ISPORT(rest,clk:IN std_logic;co:OUT std_logic;qh,ql:BUFFER std_logic_vector(3 DOWNTO 0));END jsqm;ARCHITECTURE one OF jsqm ISBEGINco<='1'WHEN(ql="1001"AND qh="0101")ELSE'0';PROCESS(clk,rest)BEGINIF(rest='0')THENql<="0000";qh<="0000";ELSIF(clk'EVENT AND clk='1')THENIF(ql =9)THEN ql<="0000";IF(qh =5)THEN qh<="0000";ELSE qh<=qh+1;END IF;ELSE ql<=ql+1;END IF;END IF;END PROCESS;END one;3、6选1数据选择器(控制LED的段选和位选)的vhdl语言编译、仿真程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity ledchoose isport(a,b,c,d,e,f: in std_logic_vector(3 downto 0);s: out std_logic_vector(2 downto 0);z: out std_logic_vector(3 downto 0);cp:in std_logic);end ledchoose;architecture behave of ledchoose isbeginprocess(cp)variable sn :std_logic_vector(2 downto 0);beginif cp'event and cp='1' then if sn="101"thensn:="000";elsesn:=sn+1;end if;case sn iswhen "000"=>z<=a;when "001"=>z<=b;when "010"=>z<=c;when "011"=>z<=d;when "100"=>z<=e;when "101"=>z<=f;when others=>null;end case;end if;s<=sn;end process;end behave;4、3-8译码器的vhdl语言编译、仿真程序如下:library ieee;use ieee.std_logic_1164.all;entity decode isport(iny:in std_logic_vector(2 downto 0);outy:out std_logic_vector(7 downto 0));end decode;architecture behave of decode isbeginprocess(iny)begincase iny iswhen "000"=>outy<="11111110";when "001"=>outy<="11111101";when "010"=>outy<="11111011";when "011"=>outy<="11110111";when "100"=>outy<="11101111";when "101"=>outy<="11011111";when "110"=>outy<="10111111";when "111"=>outy<="01111111";when others=>null;end case;end process;end behave;5、整点报时模块的编译、仿真Library ieee;Use ieee.std_logic_1164.all;Use ieee.std_logic_arith.all;Use ieee.std_logic_unsigned.all;Entity alarm isPort( a,b,c,d:in std_logic_vector(3 downto 0);q:out std_logic);End alarm;Architecture a of alarm isBeginprocess(a,b,c,d)beginif (a=0 and b=0 and c=0 and d=0) then q<='1' ;else q<='0';end if ;end process;end a;6、LED数码管显示模块的编译、仿真程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_unsigned.ALL;ENTITY led ISPORT( inp:IN STD_LOGIC_VECTOR(3 DOWNTO 0);outp:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END led;ARCHITECTURE be OF led ISBEGINprocess(inp)BEGINCASE inp isWHEN"0000"=>outp<="1111110";WHEN"0001"=>outp<="0110000";WHEN"0010"=>outp<="1101101";WHEN"0011"=>outp<="1111001";WHEN"0100"=>outp<="0110011";WHEN"0101"=>outp<="1011011";WHEN"0110"=>outp<="1011111";WHEN"0111"=>outp<="1110000";WHEN"1000"=>outp<="1111111";WHEN"1001"=>outp<="1111011";WHEN others=>outp<="0000000";end CASE;END process;END be;7、校时电路:校时、校分由两个或门组成,闲置是,按键开关一端与Vcc连接,当按下时,另一端与或门输入和下拉电阻连接,实现校时功能8、将所有模块合起来就是一个完整的动态扫描时钟之所以这样做是因为从流程图我们可以清晰的看到时钟的各部分组成,能够轻易的对其进行功能模块的拆分,好进行各个模块的vhdl语言的编译、仿真,从而使编译简化,不至于那么复杂,更易于编写vhdl语言程序,而且要是出现在错误的话可以直接到各个模块去找错误,更容易修改和解决错误问题。
VHDL课程设计报告
课程设计课程名称:交通灯设计.一、课程设计内容1.学习ALTERA公司的FPGA/CPLD的结构、特点和性能。
2.学习集成开发软件MAX+plus II/Quartus II的使用及设计过程。
3.熟悉EDA工具设计数字电路设计方法,掌握VHDL硬件描述语言设计方法。
4.根据给定题目设计数字电路,来加深对可编程逻辑器件的理解和掌握。
二、课程设计应完成的工作1.在所选择器件内完成交通灯控制器的设计,要求设计完成后芯片具有交通灯控制器的全部功能、包括显示和操作接口。
2.交通灯控制器要求控制十字路口两道路的交通灯,两道路交替通行,每次通行时间可设定20——60秒之间,每个路口要求有前行、禁止、人行灯。
(根据实际设计进度考虑可以增加左右转向灯,等待和通行时间显示等)。
3.撰写设计说明书一份(不少于2000字),阐述系统的工作原理,软、硬件设计方法,重点阐述软件思路。
说明书应包括封面、任务书、目录、摘要、正文、参考文献(资料)等内容,以及硬件电路综合图和软件程序清单等材料。
注:设计说明书题目字体用小三,黑体,正文字体用五号字,宋体,小标题用四号及小四,宋体,并用A4纸打印。
三、课程设计进程安排四、设计资料及参考文献1.康华光主编,《电子技术基础-数字部分》,高等教育出版社,1998。
2.谭会生等主编,《EDA技术及应用》,西安电子科技大学出版社,2001 3.潘松等主编,《EDA技术实用教程》,科学出版社,20064.雷伏容主编,《VHDL电路设计》,清华大学出版社,2006 5.Charles H.Roth等著,《数字系统设计与VHDL》,电子工业出版社,2008五、成绩评定综合以下因素:(1) 说明书及设计图纸的质量(占50%)。
(2) 独立工作能力及设计过程的表现(占30%)。
(3) 回答问题的情况(占20%)。
说明书和图纸部分评分分值分布如下:1、任务分析与设计思路(10分)要求说明设计任务的具体技术指标打算如何实现,根据实现各技术指标的解决方法,提出总体设计的思路和解决方案,说明其中关键问题及其解决办法。
VHDL课程设计报告
VHDL课程设计报告一、题目要求(1)、EDA实验板组装调试参照提供的EDA实验板电路原理图、PCB图以及元器件清单进行电路板的组装,组装过程中要求能读懂电路原理图,了解各部分电路工作的原理。
电路板组装完成后,编写以下三个小程序进行电路板测试:1、流水灯程序编写一个流水灯程序,使实验板上DS2—DS13十二个LED依次循环点亮。
2、数码管动态扫描程序了解BCD—七段锁存译码器CD4511的工作原理及数码管动态扫描技术,编写一个程序,使EDA实验板上的8位数码管由“0000 0000”按一定的频率自加一直到“9999 9999”,然后归零不断循环以上过程。
3、矩阵键盘扫描程序了解矩阵键盘扫描原理,编写一程序,当按下实验板上十六个按键任一键,数码管上显示相应键值1—16。
以上测试程序先经软件仿真通过后下载到实验板上进行测试,观察实验结果,若与预期设计不符则应对软、硬件进行细心检查,排除故障。
完成以上电路板组装且调试通过后可进行第二部分红外遥控系统的设计。
(2)、红外遥控系统的设计红外遥控系统由发射编码和接收解码两个部分组成,本课程设计要求制作发射编码电路板(遥控器)以及编写程序在EDA实验板上实现接收解码,具体说明如下:1、发射编码部分发射编码部分要求使用指定的元器件在万用板上完成红外遥控器的制作,该部分电路原理图参照《PT2248数据手册》,制作前请详细阅读《红外遥控器制作说明》,制作时要求元器件在万用板上排列整齐,布局合理,焊接良好,各按键功能正常,均能发送编码。
2、接收解码部分接收解码用VHDL语言编写程序,在EDA实验板上实现解码,要求具有以下功能:(1)基本要求:(a)将一体化红外接收解调器的输出信号解码(12个单击键、6个连续键,单击键编号为7-18,连续键编码为1-6),在EDA实验板上用七段数码管显示出来;(b)当按下遥控器1—6号连续键时,在EDA实验板上用发光二极管点亮作为连续键按下的指示,要求遥控器上连续键接下时指示灯点亮,直到松开按键时才熄灭,用于区别单击键。
vhdl流水灯课程设计报告
院系:姓名:学号:课程设计名称:指导老师:时间:摘要VHDL的特点应用VHDL进行系统设计,有以下几方面的特点。
(一)功能强大VHDL具有功能强大的语言结构。
它可以用明确的代码描述复杂的控制逻辑设计。
并且具有多层次的设计描述功能,支持设计库和可重复使用的元件生成。
VHDL是一种设计、仿真和综合的标准硬件描述语言。
(二)可移植性VHDL语言是一个标准语言,其设计描述可以为不同的EDA工具支持。
它可以从一个仿真工具移植到另一个仿真工具,从一个综合工具移植到另一个综合工具,从一个工作平台移植到另一个工作平台。
此外,通过更换库再重新综合很容易移植为ASIC设计。
(三)独立性VHDL的硬件描述与具体的工艺技术和硬件结构无关。
设计者可以不懂硬件的结构,也不必管最终设计实现的目标器件是什么,而进行独立的设计。
程序设计的硬件目标器件有广阔的选择范围,可以是各系列的CPLD、FPGA及各种门阵列器件。
(四)可操作性由于VHDL具有类属描述语句和子程序调用等功能,对于已完成的设计,在不改变源程序的条件下,只需改变端口类属参量或函数,就能轻易地改变设计的规模和结构。
(五)灵活性VHDL最初是作为一种仿真标准格式出现的,有着丰富的仿真语句和库函数。
使其在任何大系统的设计中,随时可对设计进行仿真模拟。
所以,即使在远离门级的高层次(即使设计尚未完成时),设计者就能够对整个工程设计的结构和功能的可行性进行查验,并做出决策。
VHDL的设计结构VHDL描述数字电路系统设计的行为、功能、输入和输出。
它在语法上与现代编程语言相似,但包含了许多与硬件有特殊关系的结构。
VHDL将一个设计称为一个实体Entity(元件、电路或者系统),并且将它分成外部的可见部分(实体名、连接)和内部的隐藏部分(实体算法、实现)。
当定义了一个设计的实体之后,其他实体可以利用该实体,也可以开发一个实体库。
所以,内部和外部的概念对系统设计的VHDL是十分重要的。
VHDL数字电路课程实验报告
VHDL数字电路课程实验报告实验一8分频器一、实验要求:分别用信号量和变量实现八分频器二、实验过程:1、代码:8分频器vhdlibrary ieee;use ieee.std_logic_1164.all;entity freq_divider isport(clk: in std_logic;out1, out2: buffer bit);end freq_divider;architecture example of freq_divider issignal count1: integer range 0 to 7;beginprocess(clk)variable count2: integer range 0 to 7;beginif(clk'event and clk='1') thencount1<=count1+1;count2:=count2+1;if(count1=3) thenout1<=not out1;count1<=0;end if;if(count2=4) thenout2<=not out2;count2:=0;end if;end if;end process;end example;八分频器tbLIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY fd_tb isEND fd_tb;architecture behavior of fd_tb iscomponent freq_dividerport(clk:IN STD_LOGIC;out1, out2: buffer bit);end component;signal clk:std_logic;signal out1,out2:bit;beginu1: freq_divider port map(clk,out1,out2);processbeginclk<='0';wait for 50 ns;loopclk<=not clk;wait for 25 ns;end loop;end process;end behavior;2、结果图:实验二实现例8.6一、实验要求:电路只有一个输入时钟信号,输出信号在适中的两个边沿都会发生变化二、实验内容:1、代码信号发生器vhdENTITY signal_gen ISPORT (clk: IN BIT;outp: OUT BIT);END signal_gen;ARCHITECTURE fsm OF signal_gen ISTYPE state IS (one, two, three);SIGNAL pr_state1, nx_state1: state;SIGNAL pr_state2, nx_state2: state;SIGNAL out1, out2: BIT;BEGINPROCESS(clk)BEGINIF (clk'EVENT AND clk = '1') THENpr_state1 <= nx_state1;END IF;END PROCESS;PROCESS (clk)BEGINIF (clk'EVENT AND clk = '0') THENpr_state2 <= nx_state2;END IF;END PROCESS;PROCESS (pr_state1)BEGINCASE pr_state1 ISWHEN one =>out1 <= '0';nx_state1 <= two;WHEN two =>out1 <= '1';nx_state1 <= three;WHEN three =>out1 <= '1';nx_state1 <= one;END CASE;END PROCESS;PROCESS (pr_state2)BEGINCASE pr_state2 ISWHEN one =>out2 <= '1';nx_state2 <= two;WHEN two =>out2 <= '0';nx_state2 <= three;WHEN three =>out2 <= '1';nx_state2 <= one;END CASE;END PROCESS;outp <= out1 AND out2;END fsm;信号发生器tbentity tb_fsm isend tb_fsm;architecture behavior of tb_fsm is component signal_gen isport( clk: in bit;outp: out bit);end component;signal clk,outp:bit;beginu1: signal_gen port map(clk,outp); processbeginclk<='0';wait for 20 ns;loopclk<=not clk;wait for 10 ns;end loop;end process;end behavior;2、结果图实验三常数比较器一、实验要求常数比较器,用于比较的变量位宽应大于等于常数二、实验内容1、代码常数比较器vhdLIBRARY ieee;USE ieee.std_logic_1164.all;entity compare isport(b: in integer range 0 to 15;x1,x2,x3: out std_logic);end compare;architecture compare of compare isconstant a: integer:=10;beginx1<='1' when a>b else '0';x2<='1' when a=b else '0';x3<='1' when a<b else '0';end compare;常数比较器tbLIBRARY ieee;USE ieee.std_logic_1164.all;entity tb_compare isend tb_compare;architecture behavior of tb_compare iscomponent compareport(b: in integer range 0 to 15;x1,x2,x3: out std_logic);end component;signal b: integer;signal x1,x2,x3: std_logic;beginu1: compare port map(b, x1,x2,x3);processbeginb<=5; wait for 10 ns;b<=8; wait for 10 ns;b<=10; wait for 10 ns;b<=13; wait for 10 ns; b<=10; wait for 10 ns; b<=3; wait for 10 ns; end process;end behavior;2、结果图实验四序列检测器一、实验要求序列检测’1001’弱检测到,输出‘1‘,否则输出’0‘二、实验内容1、状态图2、代码序列检测器vhdlibrary ieee;use ieee.std_logic_1164.all;entity string_detector isport(datain,clk: in bit;q: out bit);end string_detector;architecture sd of string_detector istype state is (zero, one, two, three, four);signal pr_state, nx_state: state;beginprocess(clk)beginif(clk'event and clk='1') thenpr_state<=nx_state;end if;end process;process(datain, pr_state)begincase pr_state iswhen zero=>q<='0';if(datain='1') then nx_state<=one;else nx_state<=zero;end if;when one=>q<='0';if(datain='0') then nx_state<=two;else nx_state<=zero;end if;when two=>q<='0';if(datain='0') then nx_state<=three;else nx_state<=zero;end if;when three=>q<='0';if(datain='1') then nx_state<=four;else nx_state<=zero;end if;when four=>q<='1';nx_state<=zero;end case;end process;end sd;序列检测器tb------------------------------------------------------------------ library ieee;use ieee.std_logic_1164.all;------------------------------------------------------------------ entity testBench isend testBench;------------------------------------------------------------------architecture test of testBench iscomponent string_detector isport(datain,clk: in bit;q: out bit);end component;signal datain,clk:bit;signal q:bit;beginSD: string_detector port map(datain,clk,q);processbeginfor i in 0 to 100 loopclk<='0';wait for 10 ns;clk<='1';wait for 10 ns;end loop;end process;processbegindin<='1';wait for 20ns;din<='0';wait for 20ns;din<='0';wait for 20ns;din<='0';wait for 20ns;din<='1';wait for 20ns;din<='0';wait for 20ns;din<='0';wait for 20ns;din<='1';wait for 20ns;din<='0';wait for 20ns;din<='1';wait for 20ns;din<='0';wait for 20ns;end process;end test;3、结果图。
vhdl课程设计设计模为 4、8、12、16的可变计数器实验报告总结
VHDL课程设计 - 可变计数器实验报告总结
一、设计概述
本课程设计的主要目标是设计并实现一个可变计数器,其模(Modulo)值可以在4、8、12、16之间进行选择。
计数器采用VHDL编程语言进行描述,并在FPGA开发板上进行测试验证。
二、设计实现
1. 硬件平台:我们选择了Xilinx的FPGA开发板作为硬件平台,它具有丰富的I/O资源和足够的逻辑单元,可以满足我们的设计需求。
2. VHDL编程:我们采用VHDL语言进行编程,实现了模4、模8、模12和模16的可变计数器。
通过选择不同的计数模式,计数器的模值可以在4、8、12、16之间进行切换。
3. 测试与验证:为了验证计数器的功能,我们编写了测试平台,并通过仿真和实际硬件测试对计数器进行了全面的测试。
三、实验结果与分析
1. 实验结果:通过仿真和实际硬件测试,我们验证了计数器的
功能正确性。
在不同的模值下,计数器都能正确地进行计数操作,并且在达到模值后能正确地回绕到0。
2. 结果分析:实验结果表明,我们的VHDL编程和FPGA开发技能得到了很好的应用和提升。
同时,通过这次课程设计,我们更深入地理解了可变计数器的设计和实现原理,提高了我们的硬件设计能力。
四、总结与展望
本次课程设计让我们深入了解了VHDL编程语言和FPGA开发技术,提高了我们的硬件设计能力。
通过实际的设计和测试,我们成功地实现了一个可变模值的计数器,达到了课程设计的要求。
在未来的学习和工作中,我们将继续深入学习FPGA设计和VHDL编程,不断提高自己的硬件设计能力。
同时,我们也期待将这种技术应用于更多的实际项目中,为工程实践做出贡献。
VHDL硬件课程设计实验报告
硬件课程设计实验报告一、全加器设计1、实验目的(1)了解四位全加器的工作原理。
(2)掌握基本组合逻辑电路的FPGA实现。
(3)熟练应用Quartus II进行FPGA开发。
2、实验原理全加器是由两个加数X i和Y i以及低位来的进位C i-1作为输入,产生本位和S i以及向高位的进位C i的逻辑电路。
它不但要完成本位二进制码X i和Y i相加,而且还要考虑到低一位进位C i-1的逻辑。
对于输入为X i、Y i和C i-1,输出为S i和C i的情况,根据二进制加法法则可以得到全加器的真值表如下表所示:全加器真值表由真值表得到S i和C i的逻辑表达式经化简后为:这仅仅是一位的二进制全加器,要完成一个四位的二进制全加器,只需要把四个级联起来即可。
i3、实验内容本实验要完成的任务是设计一个四位二进制全加器。
具体的实验过程就是利用实验系统上的拨动开关模块的K1~K4作为一个加数X输入,K5~K8作为另一个加数Y输入,用LED模块的LED1~LED8来作为结果S输出,LED亮表示输出‘1’,LED灭表示输出‘0’。
实验箱中的拨动开关、LED与FPGA的接口电路,以及拨动开关、LED 与FPGA的管脚连接在以前的实验中都做了详细说明,这里不在赘述。
4、实验现象与结果以设计的参考示例为例,当设计文件加载到目标器件后,拨动相应的拨动开关,输入两个四位的加数,则在LED灯上显示这两个数值相加的结果的二进制数。
5、实验报告(1)出不同的加数,绘仿真波形,并作说明。
(2)在这个程序的基础上设计一个八位的全加器。
(3)在这个程序的基础上,用数码管来显示相乘结果的十进制值。
(4)将实验原理、设计过程、编译仿真波形和分析结果、硬件测试结果记录下来。
二、七段数码显示设计1、七段显示基本原理七段显示器,在许多产品或场合上经常可见。
其内部结构是由八个发光二极管所组成,为七个笔画与一个小数点,依顺时针方向为A、B、C、D、E、F、G与DP等八组发光二极管之排列,可用以显示0~9数字及英文数A、B、C、D、E、F。
vhdl课程设计小结
vhdl课程设计小结一、教学目标通过本章的学习,学生应掌握VHDL(Very High Speed Integrated Circuit Hardware Description Language)的基本语法、基本结构和基本用法,能够运用VHDL对简单的数字电路进行描述和仿真。
具体来说,知识目标包括:1.掌握VHDL的基本语法和规则。
2.理解VHDL的基本结构和组成。
3.熟悉VHDL的基本用法和操作。
技能目标包括:1.能够编写简单的VHDL代码,对基本的逻辑门电路进行描述。
2.能够使用至少一种VHDL仿真工具,对编写出的代码进行仿真和测试。
情感态度价值观目标包括:1.培养学生对硬件描述语言的兴趣和好奇心。
2.培养学生独立思考、解决问题的能力。
二、教学内容本章的教学内容主要包括VHDL的基本语法、基本结构和基本用法。
具体安排如下:1.介绍VHDL的基本语法,包括数据类型、信号声明、实体声明、架构声明等。
2.讲解VHDL的基本结构,包括实体、端口、信号、进程等。
3.介绍VHDL的基本用法,包括逻辑门电路的描述、组合逻辑电路的描述、时序逻辑电路的描述等。
4.结合实际案例,讲解如何使用VHDL对数字电路进行描述和仿真。
三、教学方法为了提高学生的学习兴趣和主动性,本章将采用多种教学方法,包括讲授法、讨论法、案例分析法、实验法等。
1.讲授法:用于讲解VHDL的基本语法和基本结构。
2.讨论法:用于探讨VHDL的用法和实际应用问题。
3.案例分析法:通过分析实际案例,让学生掌握VHDL对数字电路的描述和仿真。
4.实验法:让学生动手编写VHDL代码,使用仿真工具进行仿真,巩固所学知识。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将选择和准备以下教学资源:1.教材:《VHDL Primer》(第五版),作者:Peter Flake。
2.参考书:《数字电路设计与VHDL应用》。
3.多媒体资料:VHDL教程视频、实际案例视频等。
VHDL数字系统设计实验报告
(此文档为word格式,下载后您可任意编辑修改!)大学计算机与信息学院信息工程类实验报告2013年11 月13 日实验项目列表***计算机与信息学院信息工程类实验报告系:电子信息工程系专业:电子信息工程年级: 2010级姓名: *** 学号: *** 实验课程:实验室号:__ 田C405 实验设备号:实验时间: 11.12 指导教师签字:成绩:实验一数控分频器的设计1.实验目的和要求学习数控分频器的设计、分析和测试方法。
2.实验原理信号有不同的分频比,数控分频器就是用计数值可并行预置的加法计数器设计完成的,方法是将计数溢出位与预置数加载输入信号相接即可,详细设计程序如例1所示。
数控分频器的仿真波形如图1所示:输入不同的CLK频率和预置值D,给出如图1的时序波形。
100.0μs200.0μs300.0μs400.0μs图1 当给出不同输入值D时,FOUT输出不同频率(CLK周期=50ns)3.主要仪器设备(实验用的软硬件环境)实验的硬件环境是:微机一台GW48 EDA实验开发系统一套电源线一根十芯JTAG口线一根USB下载线一根USB下载器一个示波器实验的软件环境是:Quartus II 9.0软件4.操作方法与实验步骤(1)创建工程,并命名位test。
(2)打开QuartusII,建立VHDL文件,并输入设计程序。
保存为DVF.(3)选择目标器件。
Acex1k—EP1K100QC208-3。
(4)启动编译。
(5)建立仿真波形图。
(6)仿真测试和波形分析。
(7)引脚锁定编译。
(8)编程下载。
(9)硬件测试5.实验内容及实验数据记录在实验系统上硬件验证例5-20的功能。
可选实验电路模式1(第一章图4);键2/键1负责输入8位预置数D(PIO7-PIO0);CLK由clock0输入,频率选65536Hz 或更高(确保分频后落在音频范围);输出FOUT接扬声器(SPKER)。
编译下载后进行硬件测试:改变键2/键1的输入值,可听到不同音调的声音。
VHDL课程设计报告
VHDL课程设计报告湖南科技⼤学信息与电⽓⼯程学院课程设计任务书20 —20 学年第学期专业:学号:姓名:课程设计名称:设计题⽬:完成期限:⾃年⽉⽇⾄年⽉⽇共周设计依据、要求及主要内容(可另加附页):指导教师(签字):批准⽇期:年⽉⽇⽬录⼀、摘要⼆、VHDL语⾔介绍三、设计的⽬的四、设计内容五、电路⼯作原理六、主要程序及仿真结果七、对本次设计的体会和建议⼋、参考⽂献⼀、摘要⼈类社会已进⼊到⾼度发达的信息化社会。
信息化社会的发展离不开电⼦信息产品开发技术、产品品质的提⾼和进步。
电⼦信息产品随着科学技术的进步,其电⼦器件和设计⽅法更新换代的速度⽇新⽉异。
实现这种进步的主要原因就是电⼦设计技术和电⼦制造技术的发展,其核⼼就是电⼦设计⾃动化(EDA,Electronics Design Automation)技术,EDA技术的发展和推⼴应⽤⼜极⼤地推动了电⼦信息产业的发展。
为保证电⼦系统设计的速度和质量,适应“第⼀时间推出产品”的设计要求,EDA技术正逐渐成为不可缺少的⼀项先进技术和重要⼯具。
⽬前,在国内电⼦技术教学和产业界的技术推⼴中已形成“EDA热”,完全可以说,掌握EDA技术是电⼦信息类专业学⽣、⼯程技术⼈员所必备的基本能⼒和技能。
EDA技术在电⼦系统设计领域越来越普及,本设计主要利⽤VHDL语⾔设计⼀个电⼦数字钟,它的计时周期为24⼩时,显⽰满刻度为24时59分59秒。
总的程序由⼏个各具不同功能的单元模块程序拼接⽽成,其中包括分频程序模块、时分秒计数和设置程序模块、⽐较器程序模块、三输⼊数据选择器程序模块、译码显⽰程序模块和拼接程序模块。
并且使⽤软件进⾏电路波形仿真。
关键词:数字钟EDA VHDL语⾔⼆、VHDL语⾔介绍1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语⾔。
⾃IEEE公布了VHDL的标准版本,IEEE-1076(简称87版)之后,各EDA公司相继推出了⾃⼰的VHDL 设计环境,或宣布⾃⼰的设计⼯具可以和VHDL接⼝。
VHDL课程设计报告_硬件描述语言课程设计
各专业全套优秀毕业设计图纸湖南科技大学信息与电气工程学院《课程设计报告》题目:硬件描述语言课程设计专业:电子信息工程班级:三班姓名:学号: 1204030xx指导教师:2015 年 1月 12 日信息与电气工程学院课程设计任务书2014—2015 学年第 1 学期专业:学号:姓名:课程设计名称:设计题目:完成期限:自年月日至年月日共周设计依据、要求及主要内容(可另加附页):指导教师(签字):批准日期:年月日摘要在目前,可编程逻辑器件、单片机、DSP已经成为数字系统的硬件基础,而从事数字系统的设计必须掌握可编程逻辑器件的设计方法,而VHDL语言是一种标准的数字系统硬件电路设计语言,为所有可编程逻辑器件厂商所支持,已成为电路设计人员和电子设计工程师必须掌握的工具。
VHDL语言是培养信息类专门人才的一门必修的专业基础课程。
通过本次课程设计,使我们能够学习和掌握现代电子系统设计的新技术、新器件,掌握硬件描述语言VHDL的编程技术和硬件描述方法,能够对设计系统进行规范描述掌握相关软件的使用,操作。
能对VHDL 语言程序进行编译,调试,以及通过计算机仿真,得到正确的仿真波形图,并根据所得仿真波形图分析判断并改进所设计的电路。
本次课程设计设计主要使用了VHDL语言,采用的开发软件是MAXPLUS II,设计一个多功能数字钟。
在MAXPLUS II开发平台下进行了编译、仿真、下载,实现了基本记时显示和设置、调整时间、报时和闹钟功能。
(注意,仅供参考,可以根据自己的具体设计来写,多写一点)关键词:EDA;VHDL ;Max+plus II;目录1.设计目的 (1)2.设计内容 (1)3.电路工作原理 (1)3.1循环彩灯控制器 (1)3.2五人多数表决器 (1)4.主要程序和仿真结果 (1)4.1循环彩灯控制器 (1)4.2五人多数表决器 (1)5.心得体会 (1)参考文献 (1)1.设计目的1. 熟练掌握相关软件的使用,操作。
华工VHDL课程设计报告
VHDL综合设计实验报告多功能电子计时器学院电子与信息学院专业电子信息科学类评价等级姓名班级提交日期 2013 年 2 月 27 日数字系统课程设计一、学时与学分课内学时:2周学分:2.0二、教学目的与要求本课程设计是一实践性课程,要求学生用自顶向下的模块设计方法和VHDL语言完成一个小型数字系统的设计,并可用可编程逻辑器件实现。
三、教学安排1. 方案审核要求2~3个学生自拟一个数字系统设计课题,其难度不得低于一个具有校时、整点报时和闹时功能的数字钟。
不允许抄袭他人的课题与方案。
设计方案应包括:设计要求、详细框图、控制器流程图。
学生在规定时间内将设计方案与指导教师讨论,通过后方可进入下一阶段学习(方案讨论时间为15周3的课堂内)。
2. 设计与实现在微机和进阶实验板平台上完成,通过逻辑模拟和实验板平台功能验证。
(因实验室板子有限,请同学们尽量利用课余时间到实验室调试)3. 验收在进阶实验板上下载,由教师验收平分。
4. 完成一份设计报告四、评分标准1.比例:作品80%报告20%2. 从创新、思想、难度、设计成果的可靠性、合理性等方面综合评价。
王前2012年10月设计要求1. 本计时器存在电子时钟、定时器和秒表三种功能,并可以通过开关的选择,进行不同功能的切换。
2. 电子时钟包括:24时制的时间显示、日期显示、星期显示,并具有调时、整点报时和闹钟功能。
3. 定时器可以进行 0~9999秒的定时,中途可以暂停,继续和停止,定时结束会自动提醒。
4. 秒表要求最大精度为0.01s ,并且有暂停、继续、重置按钮进度安排和任务分工1. 任务分工确定方案模块及模块接口确定 任务分工 程序编写 各自仿真实现 整体调试 整体仿真 后期修改调整2. 进度安排按模块分工,以模块难易程度均匀分工,力保成员都能真正参与到设计中来,拒绝打酱油14周确定题目15周做题目报告期末前分工假期编写各自模块返校进去整合以及后期处理3.设计环境Quartus软件,基于EP2C5T144C8芯片的开发板。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
湖南科技大学信息与电气工程学院课程设计任务书20 —20 学年第学期专业:学号:姓名:课程设计名称:设计题目:完成期限:自年月日至年月日共周设计依据、要求及主要内容(可另加附页):指导教师(签字):批准日期:年月日目录一、摘要二、VHDL语言介绍三、设计的目的四、设计内容五、电路工作原理六、主要程序及仿真结果七、对本次设计的体会和建议八、参考文献一、摘要人类社会已进入到高度发达的信息化社会。
信息化社会的发展离不开电子信息产品开发技术、产品品质的提高和进步。
电子信息产品随着科学技术的进步,其电子器件和设计方法更新换代的速度日新月异。
实现这种进步的主要原因就是电子设计技术和电子制造技术的发展,其核心就是电子设计自动化(EDA,Electronics Design Automation)技术,EDA技术的发展和推广应用又极大地推动了电子信息产业的发展。
为保证电子系统设计的速度和质量,适应“第一时间推出产品”的设计要求,EDA技术正逐渐成为不可缺少的一项先进技术和重要工具。
目前,在国内电子技术教学和产业界的技术推广中已形成“EDA热”,完全可以说,掌握EDA技术是电子信息类专业学生、工程技术人员所必备的基本能力和技能。
EDA技术在电子系统设计领域越来越普及,本设计主要利用VHDL语言设计一个电子数字钟,它的计时周期为24小时,显示满刻度为24时59分59秒。
总的程序由几个各具不同功能的单元模块程序拼接而成,其中包括分频程序模块、时分秒计数和设置程序模块、比较器程序模块、三输入数据选择器程序模块、译码显示程序模块和拼接程序模块。
并且使用软件进行电路波形仿真。
关键词:数字钟EDA VHDL语言二、VHDL语言介绍1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言。
自IEEE公布了VHDL的标准版本,IEEE-1076(简称87版)之后,各EDA公司相继推出了自己的VHDL 设计环境,或宣布自己的设计工具可以和VHDL接口。
此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。
1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,(简称93版)。
现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。
有专家认为,在新的世纪中,VHDL于Verilog语言将承担起大部分的数字系统设计任务。
VHDL主要用于描述数字系统的结构,行为,功能和接口。
除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。
VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。
在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。
这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。
三、设计的目的本项实验通过六十进制计数器和数字钟的设计与仿真,学习VHDL语言及VHDL文本输入设计方法,编写六十进制计数器和数字钟源程序,应用VMAX+plusII软件进HDL文本输入设计与波形仿真。
熟练地运用数字系统的设计方法进行数字系统设计,能进行较复杂的数字系统设计,按要求设计一个数字钟。
四、设计内容1、60进制计数器计数器60进制计数器计数器是一个用以实现计数功能的时序部件,它不仅可用来及脉冲数,还常用作数子系统的定时、分频和执行数字运算以及其它特定的逻辑功能。
计数器种类很多。
按构成计数器中的各触发器是否使用一个时钟脉冲源来分,有同步计数器和异步计数器。
2、数字钟显示秒、分、时,可清零、可调时,具有整点报时功能五、电路工作原理1、六十进制计数器“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。
“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。
2、数字钟由石英晶体振荡器、分频器、计数器、译码器显示器和校时电路组成。
振荡器产生稳定的高频脉冲信号,作为数字钟的时间基准,然后经过分频器输出标准秒脉冲。
秒计数器满60后向分计数器进位,分计数器满60后向小时计数器进位,小时计数器按照“24翻1”规律计数。
计数器的输出分别经译码器送显示器显示。
计时出现误差时,可以用校时电路校时、校分。
六、主要程序及仿真结果1、六十进制计数器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY bcd60count ISPORT(clk,bcd1wr,bcd10wr,cin:IN STD_LOGIC;co:OUT STD_LOGIC;datain:IN STD_LOGIC_VECTOR(3 DOWNTO 0);bcd1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);bcdSHI:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END ENTITY bcd60count;ARCHITECTURE rtl OF bcd60count ISSIGNAL bcd1n:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL bcd10n:STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINbcd1<=bcd1n;bcdSHI<=bcd10n;PROCESS(clk,bcd1wr)ISBEGINIF(bcd1wr ='1')THENbcd1n<=datain;ELSIF(clk 'EVENT AND clk='1')THENIF(cin='1')THENIF(bcd1n=9)THENbcd1n<="0000";ELSEbcd1n<=bcd1n+1;END IF;END IF;END IF;END PROCESS;PROCESS(clk,bcd10wr)ISBEGINIF(bcd10wr='1')THENbcd10n<=datain(2 DOWNTO 0);ELSIF(clk'EVENT AND clk='1')THENIF(cin='1'AND bcd1n=9)THENIF(bcd10n=5)THENbcd10n<="000";ELSEbcd10n<=bcd10n+1;END IF;END IF;END IF;END PROCESS;PROCESS(bcd10n,bcd1n,cin)ISBEGINIF(cin='1'AND bcd1n=9 AND bcd10n=5)THEN co<='1';ELSEco<='0';END IF;END PROCESS;END ARCHITECTURE rtl;2、仿真结果3、数字钟use ieee.std_logic_1164.all;--顶层实体,用的是20Mhz的时钟use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity clock_shu isport(clk : in std_logic;reset : in std_logic;duan : out std_logic_vector(5 downto 0);data_o : out std_logic_vector(7 downto 0));end;architecture a of clock_shu iscomponent count60port(carry : std_logic;rst : std_logic;times : out integer range 0 to 59;full : out std_logic);end component;component count24port(carry : in std_logic;rst : in std_logic;times : out integer range 0 to 23--full : out std_logic);end component;component i60bcdport(interg : in integer range 0 to 59;ten : out std_logic_vector(7 downto 0);one : out std_logic_vector(7 downto 0));end component;component i24bcdport(interg : in integer range 0 to 23;ten : out std_logic_vector(7 downto 0);one : out std_logic_vector(7 downto 0));end component;signal carry1,carry2 : std_logic;signal abin1,abin2 : integer range 0 to 59;signal abin3 : integer range 0 to 23;signal clk_1h : std_logic;signal sh,sl,mh,ml,hh,hl : std_logic_vector(7 downto 0); signal cnt : integer range 0 to 5 :=0; beginprocess(clk)--分频为1hzconstant counter_len:integer:=19999999;variable cnt:integer range 0 to counter_len;beginif clk'event and clk='1' thenif cnt=counter_len thencnt:=0;elsecnt:=cnt+1;end if;case cnt iswhen 0 to counter_len/2=>clk_1h<='0';when others =>clk_1h<='1';end case;end if;end process;process(clk)variable cnt1 : integer range 0 to 200;variable cnt2 : integer range 0 to 10;beginif clk'event and clk='1' thenif cnt1=200 thencnt1:=0;if cnt2=10 thencnt2:=0;if(cnt=5)thencnt<=0;elsecnt<=cnt+1;end if;elsecnt2:=cnt2+1;end if;elsecnt1:=cnt1+1;end if;end if;end process;process(clk)beginif clk='1' thencase cnt iswhen 0 => duan<="000001";data_o<=sl;when 1 => duan<="000010";data_o<=sh;when 2 => duan<="000100";data_o<=ml;when 3 => duan<="001000";data_o<=mh;when 4 => duan<="010000";data_o<=hl;when 5 => duan<="100000";data_o<=hh;when others=>duan<="000000";end case;end if;end process;u1 : count60 port map(carry=>clk_1h,rst=>reset,times=>abin1,full=>carry1); u2 : count60 port map(carry=>carry1,rst=>reset,times=>abin2,full=>carry2); u3 : count24 port map(carry=>carry2,rst=>reset,times=>abin3);u4 : i60bcd port map(interg=>abin1,ten=>sh,one=>sl);u5 : i60bcd port map(interg=>abin2,ten=>mh,one=>ml);u6 : i24bcd port map(interg=>abin3,ten=>hh,one=>hl);end;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity count60 is--分,秒计数器port(carry : std_logic;rst : std_logic;times : out integer range 0 to 59;full : out std_logic);end;architecture a of count60 issignal time_s : integer range 0 to 59;beginprocess(rst,carry)beginif rst='1' thentime_s<=0;full<='0';elsif rising_edge(carry) thenif time_s=59 thentime_s<=0;full<='1';elsetime_s<=time_s+1;full<='0';end if;end if;end process;times<=time_s;end; library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity count24 is--时计数器port(carry : in std_logic;rst : in std_logic;times : out integer range 0 to 23--full : out std_logic);end;architecture a of count24 issignal time_s : integer range 0 to 23;beginprocess(rst,carry)beginif rst='1' thentime_s<=0;--full<='0';elsif rising_edge(carry) thenif time_s=23 thentime_s<=0;--full<='1';elsetime_s<=time_s+1;--full<='1';end if;end if;end process;times<=time_s;end; library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity i60bcd is--分,秒显示port(interg : in integer range 0 to 59;ten : out std_logic_vector(7 downto 0);one : out std_logic_vector(7 downto 0));end;architecture a of i60bcd isbeginprocess(interg)begincase interg iswhen 0|10|20|30|40|50 => one<="11000000";when 1|11|21|31|41|51 => one<="11111001";when 2|12|22|32|42|52 => one<="10100100";when 3|13|23|33|43|53 => one<="10110000";when 4|14|24|34|44|54 => one<="10011001";when 5|15|25|35|45|55 => one<="10010010";when 6|16|26|36|46|56 => one<="10000011";when 7|17|27|37|47|57 => one<="11111000";when 8|18|28|38|48|58 => one<="10000000";when 9|19|29|39|49|59 => one<="10011000";when others => one<=null;end case;case interg iswhen 0|1|2|3|4|5|6|7|8|9 => ten<="11000000"; when 10|11|12|13|14|15|16|17|18|19 => ten<="11111001"; when 20|21|22|23|24|25|26|27|28|29 => ten<="10100100"; when 30|31|32|33|34|35|36|37|38|39 => ten<="10110000"; when 40|41|42|43|44|45|46|47|48|49 => ten<="10011001"; when 50|51|52|53|54|55|56|57|58|59 => ten<="10010010"; when others => ten<=null;end case;end process;end;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity i24bcd is--时显示port(interg : in integer range 0 to 23;ten : out std_logic_vector(7 downto 0);one : out std_logic_vector(7 downto 0));end;architecture a of i24bcd isbeginprocess(interg)begincase interg iswhen 0|10|20 => one<="11000000";when 1|11|21 => one<="11111001";when 2|12|22 => one<="10100100";when 3|13|23 => one<="10110000";when 4|14 => one<="10011001";when 5|15 => one<="10010010";when 6|16 => one<="10000011";when 7|17 => one<="11111000";when 8|18 => one<="10000000";when 9|19 => one<="10011000";when others => one<=null;end case;case interg iswhen 0|1|2|3|4|5|6|7|8|9 => ten<="11000000"; when 10|11|12|13|14|15|16|17|18|19 => ten<="11111001"; when 20|21|22|23 => ten<="10100100"; when others => ten<=null;end case;end process;end;4、仿真结果七、对本次设计的体会与建议本设计原理简单,结构清晰,较为容易仿真成功。