基于vhdl智力竞赛抢答器设计说明书.doc_第1页
基于vhdl智力竞赛抢答器设计说明书.doc_第2页
基于vhdl智力竞赛抢答器设计说明书.doc_第3页
基于vhdl智力竞赛抢答器设计说明书.doc_第4页
基于vhdl智力竞赛抢答器设计说明书.doc_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

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

文档简介

长沙理工大学计算机组成原理课程设计报告 毛 俊学 院 计算机与通信工程 专 业 网络工程 班 级 网络工程08-02 学 号 200858080214 学生姓名 毛 俊 指导教师 蔡 烁 课程成绩 完成日期 2010年12月31日课程设计任务书计算机与通信工程学院 计算机科学与技术专业 课程名称计算机组成原理课程设计时间20102011学年第一学期1718周学生姓名毛 俊指导老师蔡 烁题 目基于单片机水温控制系统主要内容: 使用EDA技术并用VHDL语言来设计一个智力竞赛抢答器,从而达到熟练掌握VHDL。要求:(1)通过对相应文献的收集、分析以及总结,给出相应课题的背景、意义及现状研究分析。(2)通过课题设计,掌握计算机组成原理的分析方法和设计方法。(3)学按要求编写课程设计报告书,能正确阐述设计和实验结果。(4)学生应抱着严谨认真的态度积极投入到课程设计过程中,认真查阅相应文献以及实现,给出个人分析、设计以及实现。应当提交的文件:(1)课程设计报告。(2)课程设计附件(主要是源程序)。课程设计成绩评定学 院 计算机通信工程 专 业 网络工程 班 级 网络08-02 班 学 号 200858080214 学生姓名 毛 俊 指导教师 蔡 烁 课程成绩 完成日期 2010年12月31日指导教师对学生在课程设计中的评价评分项目优良中及格不及格课程设计中的创造性成果学生掌握课程内容的程度课程设计完成情况课程设计动手能力文字表达学习态度规范要求课程设计论文的质量指导教师对课程设计的评定意见综合成绩 指导教师签字 年 月 日基于VHDL的智力竞赛抢答器学生:毛 俊 指导老师:蔡 烁摘要:EDA技术作为现代电子设计最新技术的结晶,其广阔的应用前景和深远的影响已毋庸置疑,它在信息工程类专业中的基础地位和核心作用也逐渐被人们所认识。许多高等学校开设了相应的课程,并为学生提供了课程设计、综合实践、电子设计竞赛、毕业设计、科学研究和产品开发等EDA技术的综合应用实践环节。相关的工程技术人员也特别重视学习EDA技术,并渴望提高其工程应用能力。 对于迅猛发展的EDA技术的综合应用,从EDA技术的综合应用系统的深度来分,可分为3个层次: 功能电路模块的设计; 算法实现电路模块的设计; 片上系统/嵌入式系统/现代DSP系统的设计。 从EDA技术的综合应用系统的最终主要硬件构成来分,已出现6种形式: CPLD/FPGA系统; CPLD/FPGA+MCU系统; CPLD/FPGA+专用DSP处理器系统; 基于FPGA实现的现代DSP系统; 基于FPGA实现的SOC片上系统; 基于FPGA实现的嵌入式系统。 从EDA技术的综合应用系统的完善层次来分,可分为3个层次:EDA综合系统主体电路的设计、仿真及硬件验证;EDA综合系统主体电路的设计、仿真、硬件验证+系统外围电路PCB的设计与制作;EDA综合系统主体电路的设计、仿真、硬件验证+系统整体电路PCB的设计与制作及系统的组装、调试。 关键词:EDA、抢答器、电路设计、程序设计、仿真、嵌入式系统目录1 引 言61.1 智力竞赛抢答器的设计目的61.2 本设计任务和基本内容72 EDA 和VHDL简介82.1 EDA的简介82.2.1 VHDL的简介82.2.2 VHDL语言的特点103 基于VHDL的智力竞赛抢答器的设计规划过程103.1智力竞赛抢答器的组成原理123.2抢答器模块的设计133.2.1 鉴别锁存模块的设计133.2.2 答题计时模块的设计143.2.3 计分电路模块163.2.4 扫描显示模块194 结束语22参考文献23代码附录241 引言无论是在学校、工厂、军队还是益智性电视节目, 都会举办各种各样的智力竞赛, 都会用到抢答器。目前市场上已有各种各样的智力竞赛抢答器, 但绝大多数是早期设计的, 以模拟电路、数字电路或者模拟电路与数字电路相结合的产品。这部分抢答器已相当成熟, 但功能越多的电路相对来说就越复杂, 且成本偏高, 故障高, 显示方式简单( 有的甚至没有显示电路) , 无法判断提前抢按按钮的行为, 不便于电路升级换代。本设计就是基于VHDL设计的一个智力竞赛抢答器尽量使竞赛真正达到公正、公平、公开。1.1 设计的目的 本次设计的目的就是在掌握EDA实验开发系统的初步使用基础上,了解EDA技术,了解并掌握VHDL硬件描述语言的设计方法和思想,通过学习的VHDL语言结合电子电路的设计知识理论联系实际,掌握所学的课程知识,学习VHDL基本单元电路的综合设计应用。通过对智力竞赛抢答器的设计,巩固和综合运用所学课程,理论联系实际,提高设计能力,提高分析、解决计算机技术实际问题的独立工作能力。本文采用经输入与非门和非门后的反馈信号的高电平作为解锁存,用555定时器的模型来倒计时,同时以脉冲信号来控制加法器和减法器来控制抢答过程中的计分,应用二极管和数码显示管为主要部件来设计扫描显示器。通过课程设计深入理解VHDL语言的精髓和掌握运用所学的知识,达到课程设计的目标。1.2 设计的基本内容本文是设计的一个四路智力竞赛抢答器,利用VHDL设计抢答器的各个模块,并使用EDA 工具对各模块进行仿真验证。智力竞赛抢答器的设计分为四个模块:鉴别锁存模块;答题计时模块;抢答计分模块以及扫描显示模块。把各个模块整合后,通过电路的输入输出对应关系连接起来。设计成一个有如下功能的抢答器:(1)具有第一抢答信号的鉴别锁存功能。在主持人发出抢答指令后,若有参赛者按抢答器按钮,则该组指示灯亮,显示器显示出抢答者的组别。同时电路处于自锁状态,使其他组的抢答器按钮不起作用。(2)具有计分功能。在初始状态时,主持人可以设置答题时间的初始值。在主持人对抢答组别进行确认,并给出倒计时计数开始信号以后,抢答者开始回答问题。此时,显示器从初始值开始计时,计至0时停止计数。(3)具有计分功能。在初始状态时,主持人可以给每组设置初始分值。第三者组抢答完毕后,由主持人打分,答对一次加10分阶段,错则减10分。 (4)扫描显示功能。在初始状态时,各组计分给出一个固定的值并将它扫描显示在屏幕上,当计分或者要显示的数据发生变化时,再次扫描并显示出来。2 EDA、VHDL简介2.1 EDA技术 EDA技术是在电子CAD技术基础上发展起来的计算机软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程在计算机上自动处理完成。现在对EDA的概念或范畴用得很宽。包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。目前EDA 技术已在各大公司、企事业单位和科研教学部门广泛使用。例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。本文所指的EDA技术,主要针对电子电路设计、PCB设计和IC设计。EDA 设计可分为系统级、电路级和物理实现级。2.2 硬件描述语言VHDL2.2.1 VHDL的简介VHDL的英文全名是Very-High-Speed Integrated Circuit HardwareDescription Language,诞生于1982年。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比其它硬件描述语言相比有以下优点: (1)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。(2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。(3)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。(4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。(5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。2.2.2VHDL语言的特点应用VHDL进行系统设计,有以下几方面的特点。(一)功能强大VHDL具有功能强大的语言结构。它可以用明确的代码描述复杂的控制逻辑设计。并且具有多层次的设计描述功能,支持设计库和可重复使用的元件生成。VHDL是一种设计、仿真和综合的标准硬件描述语言。(二)可移植性VHDL语言是一个标准语言,其设计描述可以为不同的EDA工具支持。它可以从一个仿真工具移植到另一个仿真工具,从一个综合工具移植到另一个综合工具,从一个工作平台移植到另一个工作平台。此外,通过更换库再重新综合很容易移植为ASIC设计。(三)独立性VHDL的硬件描述与具体的工艺技术和硬件结构无关。设计者可以不懂硬件的结构,也不必管最终设计实现的目标器件是什么,而进行独立的设计。程序设计的硬件目标器件有广阔的选择范围,可以是各系列的CPLD、FPGA及各种门阵列器件。(四)可操作性由于VHDL具有类属描述语句和子程序调用等功能,对于已完成的设计,在不改变源程序的条件下,只需改变端口类属参量或函数,就能轻易地改变设计的规模和结构。(五)灵活性VHDL最初是作为一种仿真标准格式出现的,有着丰富的仿真语句和库函数。使其在任何大系统的设计中,随时可对设计进行仿真模拟。所以,即使在远离门级的高层次(即使设计尚未完成时),设计者就能够对整个工程设计的结构和功能的可行性进行查验,并做出决策。3 设计规划过程3.1智力竞赛抢答器的组成原理因为设计的是四路抢答器,所以系统的输入信号有:各组的抢答按钮A、B、C、D,系统清零信号CLR,系统时钟信号CLK,计分复位端RST,加分按钮端ADD,计时预置控制端LDN,计时使能端EN,计时预置数据调整按钮TA、TB;系统的输出信号有:四个组抢答成功与否的指示灯控制信号输出口LEDA、LEDB、LEDC、LEDD,四个组抢答时的计时数码显示控制信号若干,抢答成功组别显示的控制信号若干,各组计分动态显示的控制信号若干。 根据以上的分析,我们可将整个系统分为四个主要模块:鉴别锁存模块,答题计时模块,计分电路模块,扫描显示模块。总系统框图如3.1所示。 第四组 第一组扫描显示扬声器组别显示主持人复位时间到抢答信号计 分 电 路答题计时电路 第一信号输出第一信号鉴别,锁存加分复位减分图3.1 系统框图3.2抢答器模块的设计抢答器中各个模块由VHDL实现后,利用EDA工具对各模块进行了时序仿真(Timing Simulation),其目的是通过时序可以更清楚的了解程序的工作过程。3.2.1鉴别锁存模块的设计 鉴别锁存模块的关键是准确判断出第一抢答者并将其锁存,实现的方法可使用触发器或锁存器,在得到第一信号后将输入封锁,使其它组的抢答信号无效。形成第一抢答信号后,用编码、译码及数码显示电路显示第一抢答者的组别,控制扬声器发出音响,并启动答题计时电路。本模块采用74HC373芯片,一开始,当所有开关均未按下时,锁存器输出全为高电平,经输入与非门和非门后的反馈信号仍为高电平,该信号作为锁存器使能端控制信号,使锁存器处于等待接收触发输入状态;当任一开关按下时,输出信号中必有一路为低电平,则反馈信号变为低电平,锁存器刚刚接收到的开关被锁存,这时其它开关信息的输入将被封锁。由此可见,触发锁存电路具有时序电路的特征,是实现抢答器功能的关键。鉴别锁存电路可以由VHDL程序来实现,以下是一断鉴别锁存的VHDL程序: BEGIN PROCESS(CLK) IS BEGIN IF CLR=0 THEN STATES=0000; A1=0;B1=0;C1=0;D1=0; ELSIF CLKEVENT AND CLK=1 THEN IF (A=0AND B=1AND C=1AND D=1) THEN A1=1; B1=0; C1=0; D1=0; STATES=W1; ELSIF (A=1AND B=0AND C=1AND D=1) THEN A1=0; B1=1; C1=0; D1=0; STATES=W2; ELSIF (A=1AND B=1AND C=0AND D=1) THEN A1=0; B1=0; C1=1; D1=0; STATES=W3; ELSIF (A=1AND B=1AND C=1AND D=0) THEN A1=0; B1=0; C1=0; D1=1; STATES=W4; - ELSE A1=0; B1=0; C1=0; D1=0; STATES=0000; END IF; END IF; END PROCESS; END ARCHITECTURE ART; 鉴别锁存电路由VHDL程序实现后,其仿真图如图3.2.1所示。 图3.2.1 鉴别锁存仿真图时序仿真分析:RST,STA为输入控制信号,A,B,C,D为输入信号,表示参与答题的四位选手,START,A1,B1,C1,D1为输出信号,表示抢答的输出结果,如图3.2.1所示:当A,B,C,D四个输入信号,有一个先为1时候,表示首先抢答,则输出A1为1,表示抢答成功,其他信号被屏蔽,为无效信号。3.2.2答题计时模块答题计时模块的任务是当主持人启动这个计时开关时开始计时,如果在规定的时间内答完题则答题有效,如果在规定的时间内没有完成,则答题无效。计时器从规定的时间倒计时,计时为零时计时结束。答题有无效作凭主持人来判断。本模块由比较器C1和C2,基本RS触发器和三极管T1组成。两个比较器的翻转分别由高电平触发THR和低电平触发TRI的输入电压与比较基准电压比较决定,其输出控制RS触发器和放电BJT晶体客T的状态。计时电路可以由VHDL程序来实现,以下是一断计时的VHDL程序: BEGIN IF CLR=0 THEN DA=0000; DB=0000; ELSIF clockevent and clock=1 then IF TA=0 THEN IF DA=1001 THEN DA=0000; ELSE DA=DA+1 ; END IF; END IF; IF TB=0 THEN IF DB=1001 THEN DB=0000; ELSE DB=DB+1; END IF; END IF; END IF; END PROCESS; PROCESS(clock) IS VARIABLE TMPA: STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE TMPB: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN IF CLR=0 THEN TMPA:=0000; TMPB:=0000; ELSIF clockEVENT AND clock=1 THEN IF LDN=0 THEN TMPA:=DA; TMPB:=DB; ELSIF EN=1 THEN IF TMPA=0000 THEN TMPA:=1001; IF TMPB=0000 THEN TMPB:=1001; ELSE TMPB:=TMPB-1; END IF; ELSE TMPA:=TMPA-1; END IF; END IF; END IF; QA=TMPA; QB=TMPB; END PROCESS; END ARCHITECTURE ART; 答题计时电路由VHDL程序实现后,其仿真图如图3.2.2所示。 图3.2.2 答题计时仿真图时序仿真分析:CLK为输入时钟信号,LDN为输入信号,表示开始答题,如图3.2.2所示:当选手开始答题的时候,CLK输入时钟脉冲信号,开始记时间,当选手答题完毕后,记时结束,如若在规定时间内没完成答题,则表示答题失败。3.2.3计分电路模块 计分电路模块是给答题人计分用的,按照规定如果主持人判定答题有效则加分,如无效则按照设定不加分或者扣分。并将分数显示在计分屏幕上。本模块采用74LS112芯片,设置成两个电路一个加法器和一个减法器。个位电路始终显示为0所以将它直接接显示器的个位,再把十位的看成个位加减,依此类推。电路中设加分,减分和复位按钮。加法器和减法器电路中的单脉冲分别为加分和减分按钮,而两个电路中的清零电平开关就是复位按钮。计分电路可以由VHDL程序来实现,以下是一断计分的VHDL程序:BEGIN IF (clkEVENT AND clk=1) THEN IF RST=0 THEN POINTS_A1:=0000; POINTS_B1:=0000; POINTS_C1:=0000; POINTS_D1:=0000; ELSIF ADD=0 then cnt:=cnt+1; IF cnt=2500000 then cnt:=0; IF CHOS=0001 THEN IF POINTS_A1=1001 THEN POINTS_A1:=0000; ELSE POINTS_A1:=POINTS_A1+1; END IF; ELSIF CHOS=0010 THEN IF POINTS_B1=1001 THEN POINTS_B1:=0000; ELSE POINTS_B1:=POINTS_B1+1; END IF; ELSIF CHOS=0011 THEN IF POINTS_C1=1001 THEN POINTS_C1:=0000; ELSE POINTS_C1:=POINTS_C1+1; END IF; ELSIF CHOS=0100 THEN IF POINTS_D1=1001 THEN POINTS_D1:=0000; ELSE POINTS_D1:=POINTS_D1+1; END IF; else cnt:=0; END IF; END IF; END IF; END IF; AA1=POINTS_A1; BB1=POINTS_B1; CC1=POINTS_C1; DD1=POINTS_D1; END PROCESS; END ARCHITECTURE ART;计分电路由VHDL程序实现后,其仿真图如图3.2.3所示。 图3.2.3 计分电路仿真图时序仿真分析:RST为输入控制信号,用来复位,ADD为输入信号,表示答对一题加分,CHOSE输入信号,用来选择选手,AA2,AA1,AA0,BB2,BB1,BB0为输出信号,表示记分的结果,如图3.2.3所示:选择A选手答题,如答对,则输出A2为1,如答错,则输出A1为-1,如没答,则输出A0为0。3.2.4扫描显示模块此模块将计分电路中的计分结果通过扫描并显示出来于屏幕上。抢答者和观众则通过显示屏幕上的分数来判别竞赛都之间的成绩。最终胜负结果也是通过这个分数来判别的。显示部分采用动态扫描4 位LED 显示接口电路, LED 动态显示是单片机中应用最为广泛的一种显示方式, 其接口电路是把所有显示器的8个笔划段adp 同名端并联在一起, 而每一个显示器的公共极COM是各自独立地受I/O 线控制, CPU 的字段输出口送出字形码时, 所有显示器由于同名端并连接收到相同的字形码, 但究竟哪个显示器亮, 则取决于COM端, 而这一端是由I/O 控制的, 所以就可以自行决定何时显示哪一位了, 在轮流点亮扫描过程中, 每位显示器的点亮时间表是极为短暂的, 但由于人的视觉暂留现象及发光二极管的余辉将就尽管实际上各位显示器并非同时点亮, 但只要扫描速度足够快, 给人的印象就是一组稳定的显示数据, 不会有闪烁感。扫描显示电路可以由VHDL程序来实现,以下是一断扫描显示的VHDL程序:begin if (clk_freshevent and clk_fresh=1) then cnt:=cnt+1; if cnt=000 then segcs=10000000; seg=ZBXS; elsif cnt=001 then segcs=00100000; seg=A1; elsif cnt=010 then segcs=00010000; seg=B1; elsif cnt=011 then segcs=00001000; seg=C1; elsif cnt=100 then segcs=00000100; seg=D1; elsif cnt=101 then segcs=00000010; seg=JSXS1; elsif cnt=110 then segcs=00000001; seg=JSXS2; elsif cnt=111 then segcs=00000000; seg=0000000; end if; end if;end process;end rtl;扫描显示由VHDL程序实现后,其仿真图如图3.2.4所示。 图3.2.4 扫描显示电路仿真图时序仿真分析:IN4为输入信号,OUT为输出显示信号,如图3.2.4所示,把输入信号进行编码输出。4 结束语通过一个多星期的紧张工作,我终于完成了基于VHDL的四路智力竞赛抢答器的设计。通过本次课程设计的学习,我深深的体会到设计课的重要性和目的性所在。本次设计课不仅仅培养了我们实际操作能力,也培养了我们灵活运用课本知识,理论联系实际,独立自主的进行设计的能力。它不仅仅是一个学习新知识新方法的好机会,同时也是对我所学知识的一次综合的检验和复习,使我明白了自己的缺陷所在,从而查漏补缺。希望学校以后多安排一些类似的实践环节,让同学们学以致用。在设计中要求我要有耐心和毅力,还要细心,稍有不慎,一个小小的错误就会导致结果的不正确,而对错误的检查要求我要有足够的耐心,通过这次设计和设计中遇到的问题,也积累了一定的经验,对以后从事集成电路设计工作会有一定的帮助。在应用VHDL的过程中让我真正领会到了其并行运行与其他软件顺序执行的差别及其在电路设计上的优越性。用VHDL硬件描述语言的形式来进行数字系统的设计方便灵活,利用EDA软件进行编译优化仿真度极大地减少了电路设计时间和可能发生的错误,降低了开发成本,这种设计方法必将在未来的数字系统设计中发挥越来越重要的作用。 参考文献1康华光电子技术基础教程部分M北京:高等教育版社,20002宋卫海,王明晶数字电子技术M济南:山东科学技术出版社,20063曾繁泰,陈美金.VHDL程序设计M.北京:清华大学出版社,20014潘松.VHDL实用教程M.成都:电子科技大学出版社,2000附件(1)SCN 模块的VHDL程序:-任一选手按下键后,锁存器完成锁存,对-其余选手的请求不做响应,直到主持人按-下复位键 -LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SCN IS PORT( CP:IN STD_LOGIC; CLR:IN STD_LOGIC; Q:OUT STD_LOGIC);END SCN;ARCHITECTURE RTL OF SCN ISBEGIN PROCESS(CP,CLR) BEGIN IF CLR=0 THEN -不完整的条件产生锁存 Q=0; ELSIF CPEVENT AND CP=0 THEN QDOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7=1111111; END CASE; END PROCESS; END ARCHITECTURE ART;(3)显示模块的VHDL程序:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity seg is Port (clk : in std_logic; A1:in std_logic_vector(6 downto 0); B1:in std_logic_vector(6 downto 0); C1:in std_logic_vector(6 downto 0); D1:in std_logic_vector(6 downto 0); ZBXS:in std_logic_vector(6 downto 0); JSXS1:in std_logic_vector(6 downto 0); JSXS2:in std_logic_vector(6 downto 0); seg : out std_logic_vector(6 downto 0); -输出7位seg数据; segcs : out std_logic_vector(7 downto 0); -数码管位选信号;end seg;architecture rtl of seg issignal clk_fresh : std_logic;beginprocess(clk)- -1KHZ;用于数码管扫描信号variable cnt : integer range 0 to 20000;-定时1MSbegin if clkevent and clk=1 then cnt:=cnt+1; if cnt10000 then clk_fresh=1; elsif cnt20000 then clk_fresh=0; else cnt:=0;clk_fresh=0; end if; end if;end process;process(clk_fresh)-位选信号(扫描时间1MS)variable cnt : std_logic_vector(2 downto 0);begin if (clk_freshevent and clk_fresh=1) then cnt:=cnt+1; if cnt=000 then segcs=10000000; seg=ZBXS; elsif cnt=001 then segcs=00100000; seg=A1; elsif cnt=010 then segcs=00010000; seg=B1; elsif cnt=011 then segcs=00001000; seg=C1; elsif cnt=100 then segcs=00000100; seg=D1; elsif cnt=101 then segcs=00000010; seg=JSXS1; elsif cnt=110 then segcs=00000001; seg=JSXS2; elsif cnt=111 then segcs=00000000; seg=0000000; end if; end if;end process;end rtl;(4)主控模块QDJB的VHDL程序:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY QDJB IS PORT(CLR: IN STD_LOGIC; CLK: IN STD_LOGIC; A, B, C, D: IN STD_LOGIC; A1,B1,C1,D1: OUT STD_LOGIC; STATES: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); END ENTITY QDJB; ARCHITECTURE ART OF QDJB IS CONSTANT W1: STD_LOGIC_VECTOR:=0001; CONSTANT W2: STD_LOGIC_VECTOR:=0010; CONSTANT W3: STD_LOGIC_VECTOR:=0011; CONSTANT W4: STD_LOGIC_VECTOR:=0100; BEGIN PROCESS(CLK) IS BEGIN IF CLR=0 THEN STATES=0000; A1=0;B1=0;C1=0;D1=0; ELSIF CLKEVENT AND CLK=1 THEN IF (A=0AND B=1AND C=1AND D=1) THEN A1=1; B1=0; C1=0; D1=0; STATES=W1; ELSIF (A=1AND B=0AND C=1AND D=1) THEN A1=0; B1=1; C1=0; D1=0; STATES=W2; ELSIF (A=1AND B=1AND C=0AND D=1) THEN A1=0; B1=0; C1=1; D1=0; STATES=W3; ELSIF (A=1AND B=1AND C=1AND D=0) THEN A1=0; B1=0; C1=0; D1=1; STATES=W4; - ELSE A1=0; B1=0; C1=0; D1=0; STATES=0000; END IF; END IF; END PROCESS; END ARCHITECTURE ART; (5)定时模块的VHDL程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY JSQ IS PORT(CLR,LDN,EN,CLK: IN STD_LOGIC; TA,TB: IN STD_LOGIC; QA: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); QB: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); END ENTITY JSQ; ARCHITECTURE ART OF JSQ IS SIGNAL DA: STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL DB: STD_LOGIC_VECTOR(3 DOWNTO 0); signal tempcounter: integer range 0 to 5000000; signal clock:std_logic; BEGINprocess(clk)beginif(clkevent and clk=1)then-上升沿tempcounter=tempcounter+1;if tempcounter2500000 then clock=0;elsif tempcounter5000000 then clock=1;else tempcounter=0;clock=1;end if;end if;-end if;end process; PROCESS(TA,TB,CLR,clock) IS BEGIN IF CLR=0 THEN DA=0000; DB=0000; ELSIF clockevent and clock=1 then IF TA=0 THEN IF DA=1

温馨提示

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

评论

0/150

提交评论