




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于全桥的正弦逆变控制器(完整资料)(可以直接使用,可编辑优秀版资料,欢迎下载)
基于全桥的正弦逆变控制器(完整资料)(可以直接使用,可编辑优秀版资料,欢迎下载)摘要本文将介绍一个全桥逆变器,其基本电路结构是由四个N沟道的MOS管和专门的MOS管驱动芯片IR2110组成的全桥电路。由于H桥电路属于高压大电流所以本文通过光耦实现对控制电路的隔离。通过单片机产生的PWM开关信号来控制H桥的上管,产生的SPWM调制信号来控制H桥的下管,然后通过LC滤波来实现DC到AC的转化。为了有稳定的正弦波输出本文还采用了电压反馈。关键词:LNK304、SPWM、死区、浮地、DC—DC转化芯片。一、引言逆变器(inverter)是把直流电能(电池、蓄电瓶)转变成交流电(一般为220v50HZ正弦或方波).应急电源,一般是把直流电瓶逆变成220V交流的.通俗的讲,逆变器是一种将直流电(DC)转化为交流电(AC)的装置。它由逆变桥、控制逻辑和滤波电路组成。广泛适用于空调、家庭影院、电动砂轮、电动工具、缝纫机、DVD、VCD、电脑、电视、洗衣机、抽油烟机、冰箱,录像机、按摩器、风扇、照明等。不过本文设计的是24V交流输出的逆变器。二、项目背景及意义生活中我们通常用到的用电设备都是由24V交流电源供电,况且电网只能提供220V的交流电,这时我们就需要由逆变器吧各种直流电源逆变为24V交流电源,为用电器供电,对于这个移动的社会在移动的状态中,人们不但需要由电池或电瓶供给的低压直流电,同时更需要我们在日常环境中不可或缺的24伏交流电,逆变器就可以满足我们的这种需求。三、任务要求(1)在交流供电U1=36VAC和直流供电U1=36VDC两种情况下,保证输出电压U2=24VAC,且保证其频率为50±1Hz,额定输出电流1A;(2)交流供电时,电源达到以下要求:1)电压调整率:满载条件下,U1从29VAC增加至43VAC,U2变化不超过5%;2)负载调整率:U1=36VAC、U2=24VAC,从空载到满载,U2变化不超过5%;具有输出短路保护功能。满载条件下,输出为正弦波,失真度不大于5%。逆变器设计的总体框架图:图一:总体框架图四、逆变硬件电路的设计(1)H桥半桥逆变功率转换主电路与全桥电路的区别就是,用另外两只电容代替两个同样的开关管,即由2只开关管和电容组成逆变开关电路。从电路图上可以很方便的看出一点明显的区别,就是开关管的数量不同.半桥式电路的开关管数量少,成本也就相应的低。全桥式电路有4只开关管,需要两组相位相反的驱动脉冲分别控制两对开关管,那就难免导致驱动电路的复杂。半桥式电路由于只有两只管子,没有同时通断地问题,且其抗不平衡能力强,也就是说对duty的要求不是很高,所以驱动电路相对于全桥就简单很多。半桥和全桥电路的适用场合也不相同。半桥式电路变压器原边电压为±1/2Vdc,而全桥式电路变压器原边电压为±Vdc。P=V原边*I输入,要想输出相同的功率,半桥式电路的输入电流就要是全桥式电路的2倍;换句话说,如果他们的开关电流一样,电源输入电压也相等,半桥式的输出功率将是全桥式的一半.因此,半桥式电路不适用于大功率的逆变电路。而且,由于其输入电压电流的不同,变压器的设计上也存在一定的区别,半桥式电路变压器原边线径要粗一些,全桥式电路的原边线圈匝数则要相对多一些.但由于考虑到半桥电路是根据2个相同的电容来实现对Vdc的分压,而实际中比较难实现完全相等的分压效果,所以本文还是采用了全桥电路。全桥电路可以采用MOS管、三极管、IGBT组成。但是一般采用主要MOS管,与三极管相比MOS管只需要电压,而三极管必须需要一定的前级电流,这样会导致前级驱动电路的功耗加大,结构也更复杂。而MOS管与IGBT相比则又稍差点,主要是因为IGBT可以输出很大的电流,但是IGBT的价格比较贵,综合考虑本文采用了MOS管。我们知道由MOS管组成的全桥电路有两种:四个N沟道的MOSFET、两个P沟道两个N沟道的MOSFET,具体如下图2,3.图2:4N沟道H桥电路图3:上管P沟道的H桥电路第一种方案它的优点是价格比较便宜,而且N沟道输出的电流比P沟道要大很多。但是从驱动电路来说,相比与上管为P沟道的MOS管要复杂的多,它需要浮地驱动。而上管为P沟道的MOS管只需经过一个三极管就可以了,具体电路如图4.但是由于设计要求需要1A的输出电流,所以本文采用了第一种方案。图4:三极管驱动电路(2)驱动电路由于本文采用了4个N沟道构成的H桥主控电路,所以驱动电路用分立元件搭会比较的复杂所以本文采用了IR2110.IR2110是IR公司生产的大功率MOSFET和IGBT专用驱动集成电路,可以实现对MOSFET和IGBT的驱动,同时还具有快速完整的短路保护电路。IR2110的内部结构图如下图5。图5:IR2110的内部结构图图中HIN和LIN为逆变桥中同一桥壁上下两个功率MOS管的驱动脉冲信号输入端。SD为保护信号的输入端,当该脚为高电平时,IR2110的输出信号全被封锁,其对应的输出端恒为低电平;而当该引脚为低电平时,IR2110的输出信号随HIN和LIN而变化。在实际电路中,该端接用户保护电路的输出。HO和LO是两路驱动信号的输出端,驱动同一桥壁的MOSFET,短路保护电路如图6。图6:短路保护电路我们知道四个N沟道组成的H桥电路,需要浮地驱动.下面就介绍下IR2110的高压侧悬浮驱动的原理.IR2110用于驱动半桥的电路如图7所示。图中C1、VD1分别为自举电容和二极管,C2为VCC的滤波电容。假定在S1关断期间C1已充到足够的电压(VC1≈VCC)。当HIN为高电平时VM1开通,VM2关断,VC1加到S1的门极和发射极之间,C1通过VM1,Rg1和S1门极栅极电容Cgc1放电,Cgc1被充电。此时VC1可等效为一个电压源。当HIN为低电平时,VM2开通,VM1断开,S1栅电荷经Rg1、VM2迅速释放,S1关断。经短暂的死区时间(td)之后,LIN为高电平,S2开通,VCC经VD1,S2给C1充电,迅速为C1补充能量。如此循环反复。图7:IR2110的浮地驱动自举电容的设计,我们知道MOS管开通时,需要在极短的时间内向门极提供足够的栅电荷。假定在器件开通后,自举电容两端电压比器件充分导通所需要的电压(10V,高压侧锁定电压为8.7/8.3V)要高;再假定在自举电容充电路径上有1.5V的压降(包括VD1的正向压降);最后假定有1/2的栅电压(栅极门槛电压VTH通常3~5V)因泄漏电流引起电压降.综合上述条件,此时对应的自举电容可用下式表示:C1=2Qg/(VCC-10-1.5)。例如IRF840MOSFET来说充分导通时所需要的栅电荷Qg=2.5*10^4nC(可由特性曲线查得),VCC=15V,那么C1=2×2.5×10^4*10^-9/(15-10-1。5)=1。4×10—6F可取C1=2。2μF或更大一点的,且耐压大于35V的钽电容.我们知道驱动电路一般都处于弱电和强电之间,所以为了提高系统的稳定性和安全性,本文采用了TLP250(光耦隔离芯片)。图8:光耦隔离(3)辅助电源由于本文需要12V、5V、—5V的辅助电源,所以本文采用了LinkSwitch—TN系列四端非隔离式、节能型单片开关电源专用IC。它是专门为取代家用电器及工业领域所用小功率线性电源而设计的,不仅去掉笨重的电源变压器,还克服了阻容降压式线性电源负载特性差的缺陷。本文采用了LinkSwitch—TN系列中的LNK304专用开关电源IC,其输入电压范围在交流85~265V范围且具有良好的电压调整率和负载调整率。而且从它的PDF文档中也不难看出它可以采用直流输入.图8:LNK的应用电路(4)反馈电路—AD736由于任务要求交流供电时,电源达到以下要求:1)电压调整率:满载条件下,U1从29VAC增加至43VAC,U2变化不超过5%;2)负载调整率:U1=36VAC、U2=24VAC,从空载到满载,U2变化不超过5%;所以本文采用了真有效值转换芯片AD736,AD736是经过激光修正的单片精密真有效值AC/DC转换器.其主要特点是准确度高、灵敏性好(满量程为200mVRMS)、测量速率快、频率特性好(工作频率范围可达0~460kHz)、输入阻抗高、输出阻抗低、电源范围宽且功耗低最大的电源工作电流为200μA。用它来测量正弦波电压的综合误差不超过±3%.AD736有多种应用电路形式,图9为双电源供电时典型的应用电路.该电路的+Vs与COM、—Vs与COM之间均应并联一只0.1uf的电容以便滤掉该电路中的高频干扰,Cc起隔直作用。如果按图中虚线方向将1脚和8脚短接而成Cc失效,则所选择的就是AC+DC方式;如果去掉短路线,即为AC方式。R为限流电阻,D1和D2为双相限幅二极管,起过压保护作用.图9:AD736外围电路逆变软件部分的设计全桥逆变控制方式主要分为双极性控制方式和单极性控制方式。双极性控制是对角的一对开关为同步开关,桥臂上下管之间除死区时间外为互补开关,控制相对简单,但是它的开关损耗高,存在很大的开关谐波,电磁干扰大,而单极性控制可以很好地解决这些问题。全桥逆变器单极性控制仅用一对高频开关,相对于双极性控制具有损耗低、电磁干扰小、无开关频率级谐波等优点,正在取代双极性逆变控制方式。但由于控制环路的延时作用,单极性控制方式的逆变器仍然受一个问题的困扰,即在过零点存在一个明显的振荡。本文采用的是单极性SPWM,我们知道可以用模拟电路构成三角波载波和正弦调制波发生电路,用比较器来确定它们的交点,在交点时刻对功率开关器件的通断进行控制,就可以生成SPWM波形.但这种模拟电路结构复杂,难以实现精确的控制。微机控制技术的发展使得用软件生成的SPWM波形变得比较容易,因此,目前SPWM波形的生成和控制多用微机来实现.本文主要介绍软件生成SPWM波形的几种基本方法。(1)自然采样法按照SPWM控制的基本原理,在正弦波和三角波的自然交点时刻控制功率开关器件的通断,这种生成SPWM波形的方法称为自然采样法.正弦波在不同相位角时其值不同,因而与三角波相交所得到的脉冲宽度也不同。另外,当正弦波频率变化或幅值变化时,各脉冲的宽度也相应变化。要准确生成SPWM波形,就应准确地算出正弦波和三角波的交点。图10:生成SPWM波形的自然采样法交点A是发出脉冲的时刻tA,交点B是结束脉冲的时刻tB,t2为脉宽,t1+t3为脉宽间歇时间,Tc=t1+t2+t3。为载波周期,M=Urm/Utm为调制度,Urm为调制波幅值,Utm为载波幅值。设Utm=1,则Urm=M,正弦调制波为ur=Msinω1t,ω1为调制频率,也是逆变器输出频率。由几何相似三角形关系可得脉宽计算式t2=Tc/2[1+M/2(sinω1tA+sinω1tB)]这是一个超越方程,tA、tB与载波比N和调制度M都有关系,求解困难,并且tl≠t3,计算更增加困难,这种采样法不适宜微机实时控制.规则采样法1自然采样法的主要问题是SPWM波形每个脉冲的起始和终了时刻tA和tB对三角波的中心线不对称,使求解困难.如果设法使SPWM波形的每一个脉冲都与三角载波的中心线对称,于是就可以简化,而且两侧的间隙时间相等,即t1=t3,从而使计算工作量大为减轻。规则采样法有两种,图10为规则采样I法。其特点是:它固定在三角载波每一周期的正峰值时找到正弦调制波上的对应点,即图中D点,求得电压值Urd。用此电压值对三角波进行采样,得A、B两点,就认为它们是SPWM波形中脉冲的生成时刻,A、B之间就是脉宽时间t2。规则采样I法的计算显然比自然采样法简单,但从图中可以看出,所得的脉冲宽度将明显地偏小,从而造成不小的控制误差。这是由于采样电压水平线与三角载波的交点都处于正弦调制波的同一侧造成的.图11:规则采样法1(3)规则采样2图11中仍在三角载波的固定时刻找到正弦调制波上的采样电压值,但所取的不是三角载波的正峰值,而是其负峰值,得图中E点,采样电压为Ure。在三角载波上由Urt水平线截得A、B两点,从而确定了脉宽时间t2。这时,由于A、B两点坐落在正弦调制波的两侧,因此减少了脉宽生成误差,所得的SPWM波形也就更准确了。规则采样法的实质是用阶梯波来代替正弦波,使算法简化.在规则法中,三角波每个周期的采样时刻都是确定的,不作图就可算出相应时刻的正弦波值。以规则采样Ⅱ法为例,采样时刻的正弦波值依次为Msinω1te、Msin(ω1te+Tc)、Msin(ω1te+2Tc)…,由几何相似三角形关系可得脉宽计算公式t2=Tc/2(1+Msinω1te),间歇t1=t3=1/2(Tc-t2)。图12:规则采样法2本文采用的是规则采样法来生成SPWM波,下面是程序设计的流程框图。图13:SPWM生成的流程框图电路仿真和结果分析SPWM的生成图14:SPWM的仿真图两路互补的PWM波形两路互补的SPWM波形(2)输出波形空载输出波形带载输出波形附件A逆变电路的原理图附件B逆变的PCB图数字系统课程设计基于FPGA的交通控制灯设计姓名:学号:班级:摘要随着社会的发展,城市规模的不断扩大,城市交通成为制约城市发展的一大因素.人口和汽车日益增长,市区交通也日益拥挤,人们的安全问题当然也日益重要。因此,红绿交通信号灯成为交管部门管理交通的重要工具之一。有了交通灯,人们的安全出行也有了很大的保障.自从交通灯诞生以来,其内部的电路控制系统就不断的被改进,设计方法也开始多种多样,从而使交通灯显得更加智能化。尤其是近几年来,随着电子与计算机技术的飞速发展,电子电路分析和设计方法有了很大的改进,电子设计自动化也已经成为现代电子系统中不可或缺的工具和手段,这些都为交通灯控制系统的设计提供了一定的技术基础。本课程设计运用erilogHDL语言描述交通控制器,通过状态机计数法,实现设计所要求的交通灯控制及时间显示,并最后进行了软件实现,达到了系统要求的功能。设计原理1。1设计要求设计一个交通控制器,用LED显示灯表示交通状态,并以7段数码显示器显示当前状态剩余秒数主干道绿灯亮时,支干道红灯亮;反之亦然,二者交替允许通行,主干道每次放行35s,支干道每次放行25s。每次由绿灯变为红灯的过程中,亮光的黄灯作为过渡,黄灯的时间为5s.能进行特殊状态显示,特殊状态时东西、南北路口均显示红灯状态。用LED灯显示倒计时,并且能实现总体清零功能,计数器由初始状态开始计数,对应状态的显示灯亮.能实现特殊状态的功能显示,1.2设计思路和原理本次设计是针对十字路口,进行南北和东西直行情况下交通灯控制。设定东西方向为主干道方向,根据交通灯的亮的规则,在初始状态下四个方向的都为红灯亮启,进入正常工作状态后,当主干道上绿灯亮时,支干道上红灯亮,持续35S后,主干道和支干道上的黄灯都亮启,持续5S后,主干道上红灯亮启,支干道上绿灯亮启持续25S,之后主干道和支干道上的黄灯都亮启5s,一个循环完成。循环往复的直行这个过程.其过程如下图所示:图1.交通灯点亮时间控制说明1。3实现方法本次采用文本编辑法,即利用VerilogHDL语言描述交通控制器,通过状态机计数法,实现设计所要求的交通灯控制及时间显示。设计中用两组红黄绿LED模拟两个方向上的交通灯,用4个7段数码管分别显示两个方向上的交通灯剩余时间,控制时钟由试验箱上频率信号提供。VerilogHDL程序设计2。1整体设计根据上章设计原理,交通灯控制的关键是各个状态之间的转换和进行适当的时间延时,根据状态机的设计规范,本次设计了三个状态之间的循环转化,其真值表及状态转化图如下所示:图2.交通灯控制状态转化说明:该状态图为交通灯在正常情况下的状态转化图,进入控制后,状态00时主干道绿灯及支干道红灯亮起,进入状态01后两路黄灯亮起,状态11时主干道红灯及支干道绿灯亮起。进入10状态两路黄灯亮起。结束一个循环,从00状态重新开始循环.为实现控制与显示的功能,需要设计交通灯点亮顺序控制程序,倒数计时程序,七段数码管显示程序,数码管显示扫描程序,其系统结构图如下所示:图3.交通灯控制系统结构图其中rst为复位信号,clk为时钟信号,hold为特殊情况控制信号,输入hold时两个方向红灯无条件亮起。2.2具体设计根据整体设计要求,编写各个功能部分VerilogHDL程序,设置各输入输出变量说明如下clk:为计数时钟;qclk:为扫描显示时钟;en:使能信号,为1的话,则控制器开始工作;rst:复位信号,为1的话,控制及技术回到初始状态;hoid:特殊情况控制信号,为1的话,则两个方向无条件显示为红灯;light1:控制主干道方向四盏灯的亮灭;其中,light1[0]~light[2],分别控制主干道方向的绿灯、黄灯和红灯;light2:控制支干道方向四盏灯的亮灭;其中,light2[0]~light2[2],分别控制支干道方向的绿灯、黄灯和红灯;num1:用于主干道方向灯的时间显示,8位,可驱动两个数码管;num2:用于支干道方向灯的时间显示,8位,可驱动两个数码管;counter:用于数码管的译码输出;st1,st2:数码管扫描信号。输入输出及中间变量设置如下:moduletraffic(en,clk,qclk,rst,rst1,hold,num1,num2,light1,light2,counter,st1,st2);inputen,clk,qclk,rst,hold,rst1;outputst1,st2;output[7:0]num1,num2;output[6:0]counter;output[2:0]light1,light2;regtim1,tim2,st1,st2;reg[1:0]state1,state2,ste;reg[2:0]light1,light2;reg[3:0]num;reg[6:0]counter;reg[7:0]num1,num2;reg[7:0]red1,red2,green1,green2,yellow1,yellow2;二极管点亮控制该部分程序的作用是根据计数器的计数值控制发光二极管的亮、灭,以及输出倒计时数值给七段数码管的译码电路。此外,当检测到特殊情况(hold=‘1’)发生时,无条件点亮红灯的二极管,当检测到复位信号,两个方向计数与控制回复到00状态。因为主、支干道两个方向二极管点亮的顺序与延迟时间不同,顾编写两个独立的部分来控制,具体程序如下:1)主干道方向always@(posedgeclk)beginif(rst)//复位与特殊情况控制beginlight1〈=3’b001;num1〈=green1;endelseif(hold)beginlight1<=3'b100;num1<=green1;endelseif(en)begin//使能有效开始控制计数if(!tim1)//begin//主干道交通灯点亮控制tim1〈=1;case(state1)2'b00:beginnum1<=green1;light1〈=3’b001;state1<=2’b01;end2'b01:beginnum1〈=yellow1;light1<=3'b010;state1〈=2’b11;end2'b11:beginnum1〈=red1;light1〈=3'b100;state1<=2'b10;end2’b10:beginnum1<=yellow1;light1〈=3'b010;state1〈=2'b00;enddefault:light1<=3’b100;endcaseend2)支干道方向always@(posedgeclk)beginif(rst)//复位与特殊情况控制beginlight2〈=3'b100;num2<=red2;endelseif(hold)beginlight2<=3'b100;num2<=red2;endelseif(en)beginif(!tim2)begintim2〈=1;case(state1)2'b00:beginnum2〈=red2;light2〈=3’b100;state2〈=2'b01;end2’b01:beginnum2<=yellow1;light2〈=3'b010;state2〈=2’b11;end2'b11:beginnum2〈=green2;light2<=3'b001;state2〈=2'b10;end2'b10:beginnum2<=yellow2;light2〈=3'b010;state2〈=2’b00;enddefault:light2<=3'b100;endcaseend倒数计时该部分程序完成二极管发光时延的计数,并将计数结果送到数码管显示电路,每切换到一个状态,计数器的初值都被重置,以实现不同颜色二极管不同的时延要求。本次设计直接用逻辑运算完成2位十进制数的计数,未采用分位器的设计。因为主、支干道上计数器的结构完全相同,顾只列出一路的程序,其具体程序如下所示:always@(posedgeclk)beginelsebegin//倒数计时if(num1>0)if(num1[3:0]==0)beginnum1[3:0]<=4'b1001;num1[7:4]<=num1[7:4]-1;endelsenum1[3:0]<=num1[3:0]-1;if(num1==1)tim1<=0;endendelsebeginlight1<=3’b010;num1=2'b00;tim1〈=0;endend数码管的译码及扫描显示该段程序主要完成4个7段数码管的译码显示及扫描,使系统能正常显示主、支干道两个方向上的剩余时间。译码的时钟频率要低,为Hz级。扫描的时钟频率要高,最低不得小于人眼分辨频率50Hz,具体程序如下所示:always@(posedgeqclk)begin//数码管扫描if(rst1)beginst1=0;st2=0;endelsebegincase({st2,st1})2'b00:beginnum<=num1[3:0];{st2,st1}〈=2'b01;end2'b01:beginnum<=num1[7:4];{st2,st1}<=2'b10;end2’b10:beginnum<=num2[3:0];{st2,st1}〈=2’b11;end2'b11:beginnum<=num2[7:4];{st2,st1}〈=2'b00;endendcaseendendalways@(posedgeqclk)begin//数码管译码显示case(num)4'b0000:counter〈=7’b0111111;//04'b0001:counter〈=7'b0000110;//14'b0010:counter<=7’b1011011;//24’b0011:counter<=7'b1001111;//34'b0100:counter〈=7’b1100110;//44'b0101:counter〈=7'b1101101;//54’b0110:counter<=7'b1111101;//64’b0111:counter<=7'b0000111;//74'b1000:counter<=7'b1111111;//84'b1001:counter<=7’b1101111;//9default:counter〈=7'b0111111;//0endcaseendendmodule总体程序见程序清单所示仿真与硬件调试3.1波形仿真在QuartursⅡ软件下创建工程,新建编辑设计文件,将程序输入,整体编译后,新建波形仿真文件。设置仿真时间,时钟周期,输入输出端口,进行波形仿真。具体仿真波形图及说明如下所示:仿真截止时间:100us;时钟:clk1us,qclk0.1us1.正常工作时波形仿真图图4.正常工作时波形仿真图图形说明波形仿真主要完成了控制与计数以及数码管显示的波形图.en为低电品时,计数器置初值,高电平时开始正常控制与计数。控制发光二极管首次输出为“light1=001,light2=100",表示主干道路绿灯亮,支杆道路红灯亮,计数器num1和num2从“00110101"开始递减计数,计数至“00000000"时,进入下一个状态,控制输出量为light=010,light2=010,表示主、支干道黄灯均亮起,计数器num1和num2从“00000101"开始计数递减,计数至”00000000"时进入下一个状态,light=100,light2=001,表示主干道路红灯亮,支杆道路绿灯亮.Counter根据num1,num2变化随时钟上升沿输出译码后的数据.由于屏幕显示大小有限,未仿真出一个完整周期.2.特殊情况仿真波形图5.特殊情况仿真波形图形说明当hold输入高电平时,在时钟上升沿的控制下,light1与light2被强制置位为”100”,表示两路红灯均亮起3.复位情况仿真波形图6.复位情况仿真波形图形说明当rst输入高电平时,在时钟上升沿控制下,计数与控制都回到00状态,即light1=001,light2=100,计数器num1和num2从“00110101”开始递减计数。3。2硬件调试完成时序仿真确认无误后,进行实验箱管脚设置,注意设置完成后一定要再进行一次全局仿真,使程序真正对应于硬件输出输出。具体连接说明如下所示输入变量:rst、clk、qclk、hold、en其中en,hold,rst接”0-1”拨码开关,以稳定的输出可变化的电平。计数时钟clk接实验箱上1Hz时钟,扫描显示时钟qclk接125Khz时钟。输出变量:light1[2:0]、light2[2:0]、counter[6:0]、st1、st2其中light1[0]、light2[0]分别接绿色的发光二极管;light1[1]、light2[1]分别接黄色的发光二极管;light1[2]、light2[2]分别接红色的发光二极管.counter[0]~counter[6],分别接七段数码管的a~f,st1、st2分别接试验箱上”4-16”译码器的低两位。完成接线后将程序烧写到芯片上,开始功能调试.分辨改变使能信号,复位信号以及特殊情况信号,观察数码管以及发光二级管情况。程序清单moduletraffic(en,clk,qclk,rst,rst1,hold,num1,num2,light1,light2,counter,st1,st2);inputen,clk,qclk,rst,hold,rst1;outputst1,st2;output[7:0]num1,num2;output[6:0]counter;output[2:0]light1,light2;regtim1,tim2,st1,st2;reg[1:0]state1,state2,ste;reg[2:0]light1,light2;reg[3:0]num;reg[6:0]counter;reg[7:0]num1,num2;reg[7:0]red1,red2,green1,green2,yellow1,yellow2;always@(en)if(!en)begin//设置计数初值green1〈=8'b00110101;red1<=8’b00100101;yellow1〈=8’b00000101;green2〈=8’b00100101;red2〈=8'b00110101;yellow2<=8'b00000101;endalways@(posedgeclk)beginif(rst)//复位与特殊情况控制beginlight1〈=3’b001;num1<=green1;endelseif(hold)beginlight1<=3'b100;num1〈=green1;endelseif(en)begin//使能有效开始控制计数if(!tim1)//开始控制begin//主干道交通灯点亮控制tim1<=1;case(state1)2'b00:beginnum1〈=green1;light1<=3’b001;state1〈=2'b01;end2'b01:beginnum1〈=yellow1;light1〈=3’b010;state1〈=2'b11;end2'b11:beginnum1<=red1;light1<=3’b100;state1〈=2’b10;end2'b10:beginnum1<=yellow1;light1〈=3’b010;state1<=2'b00;enddefault:light1〈=3’b100;endcaseendelsebegin//倒数计时if(num1>0)if(num1[3:0]==0)beginnum1[3:0]<=4'b1001;num1[7:4]<=num1[7:4]—1;endelsenum1[3:0]〈=num1[3:0]-1;if(num1==1)tim1<=0;endendelsebeginlight1〈=3'b010;num1=2'b00;tim1<=0;endendalways@(posedgeclk)beginif(rst)//复位与特殊情况控制beginlight2〈=3’b100;num2<=red2;endelseif(hold)beginlight2〈=3'b100;num2<=red2;endelseif(en)beginif(!tim2)begintim2<=1;case(state1)2’b00:beginnum2〈=red2;light2〈=3’b100;state2<=2'b01;end2’b01:beginnum2<=yellow1;light2〈=3'b010;state2〈=2'b11;end2'b11:beginnum2<=green2;light2〈=3'b001;state2<=2’b10;end2'b10:beginnum2<=yellow2;light2<=3’b010;state2<=2'b00;enddefault:light2〈=3'b100;endcaseendelsebegin//倒数计时if(num2>0)if(num2[3:0]==0)beginnum2[3:0]<=4’b1001;num2[7:4]<=num2[7:4]—1;endelsenum2[3:0]<=num2[3:0]-1;if(num2==1)tim2<=0;endendelsebegintim2<=0;state2<=2’b00;light2〈=3’b010;endendalways@(posedgeqclk)begin//数码管扫描if(rst1)beginst1=0;st2=0;endelsebegincase({st2,st1})2'b00:beginnum<=num1[3:0];{st2,st1}〈=2'b01;end2'b01:beginnum<=num1[7:4];{st2,st1}<=2’b10;end2'b10:beginnum<=num2[3:0];{st2,st1}<=2'b11;end2'b11:beginnum<=num2[7:4];{st2,st1}<=2'b00;endendcaseendendalways@(posedgeqclk)begin//数码管译码显示case(num)4'b0000:counter<=7'b0111111;//04’b0001:counter<=7'b0000110;//14’b0010:counter〈=7'b1011011;//24’b0011:counter<=7’b1001111;//34'b0100:counter<=7'b1100110;//44’b0101:counter<=7'b1101101;//54’b0110:counter<=7'b1111101;//64'b0111:counter<=7’b0000111;//74'b1000:counter<=7'b1111111;//84’b1001:counter〈=7'b1101111;//9default:counter<=7'b0111111;//0endcaseendendmodule总结在设计中采用VerilogHDL语言设计交通灯控制系统,借助其功能强大的语言结构,简明的代码描述复杂控制逻辑设计,与工艺无关特性,在提高工作效率的同时达到求解目的,并可以通过VerilogHDL语言的综合工具进行相应硬件电路生成,具有传统逻辑设计方法所无法比拟的优越性。在设计过程中,觉得最难的部分是波形仿真部分,虽然程序编译通过但仿真出不了正确的波形,不是计数器无法正常计数,就是控制输出无法进入到下一个状态,每次出现问题就必须返回重新修改程序.实践证明,在编写一个较复杂的程序时,一开始一定要画流程图,弄清楚各个功能及实现它们的逻辑算法,做到心中有数后在开始下笔写编写程序。在编写的时候要尤其要注意语言的规范,如本次设计中编写的Verilog在Quartus8.1中可以正常生成时序图,而在低版本的软件中却无法生成,原因就是语言使用不规范,在解决这个问题时我总结了一些经验,首先程序要逻辑清晰,简洁明了,避免不必要的嵌套与条用,其次要适当地给程序加上注解文字,提高可读性,以方便之后的程序出错时进行查找,最后充分利用仿真软件提供的各项编译工具与报错消息,按图索骥,有方向的完成程序调试。完成仿真后进行,进行试验箱上的硬件调试,该步骤主要是要求细心,按照引脚清单,逐一完成连线,本次设计用到两个时钟输入,注意一定要选择合适频率的时钟,以便达到期望的效果。注意观察实物的现象,看是否满足设计要求,不满足时检查是硬件问题还是程序问题,如果是程序问题,在修改完之后必须要重新编译,重新烧入.不断排查错误,直至达到满意的效果。通过这次课程设计,熟悉了简单EDA设计的整个流程,加深了对VerilogHDL硬件描述语言的理解,提高了动手能力,并且锻炼了自己的耐心,收获颇丰,我会把在本次课程设计中学到的东西应用到今后的工作学习中。参考资料[1]夏宇闻。复杂数字电路与系统的VerilogHDL设计技术[M].北京:北京航空航天大学出版社,1998[2]郭梯云.移动通信[M].西安:西安电子科技大学出版社,1995[3][法]MichelMouly,MarieBernadettePautet1GSM数字移动通信系统[M]。骆健霞,顾龙信,徐云霄译。北京:电子工业出版社,1996[4]张毅刚,乔立岩。虚拟仪器软件开发环境LabWindowsöCVI610编程指南[M].北京:机械工业出版社,2002[5]刘国权.GSM手机的测试[J].中国无线电管理,2003[6]俞定玖,刘湘慧.GSM数字蜂窝移动交换系统测试[J]。电信科学,2000[7]张明.VerilogHDL实用教程[M].成都:电子科技大学出版社,1999[8]HydeDC.BucknellHandbookonVerilogHDL1ComputerScienceDepartment,BucknellUniversityLewisburg,1995[9]康华光.电子技术基础(数字部分)[M]。北京:高等教育出版社,1988**大学**学院现代电子系统设计**系(院)**专业题目:基于FPGA技术的微波炉控制器学生姓名:班级:学号:指导教师:完成日期:年月摘要本文介绍了应用FPGA芯片和硬件描述语言(VHDL)设计微波炉控制器系统的方法。系统使用VHDL编程实现各底层模块的功能,顶层的设计采用图形输入完成.本文主要阐述模块化设计的思想和状态图的描述方法,以及它们在硬件描述语言中的应用,并展示了其在QuartusⅡ开发系统下的仿真结果和烧写到EPM570T100C5后的现象。主要有以下几个模块:状态控制器KZQ、数据装载器ZZQ、烹调计时器JSQ、显示译码器YMQ47以及分频器和动态显示电路.该控制器具有系统复位、状态控制、时间设定、烹饪计时、动态显示译码等功能。关键字:FPGA;VHDL;微波炉;控制器;状态图;定时器目录TOC\o”1-3"\h\z\uHYPERLINK=〉DATA2<=DATA1; -—LOAD_CLKWHENOTHERS=>NULL;ENDCASE;ENDPROCESS;ENDARCHITECTUREBHV;7。2.4计时器JSQ,和其中需用到的DCNT6和DCNT10--JSQ。VHDLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED。ALL;USEIEEE.STD_LOGIC_ARITH.ALL;ENTITYJSQISPORT(COOK:INSTD_LOGIC;DATA3:INSTD_LOGIC_VECTOR(15DOWNTO0);LOAD:INSTD_LOGIC;CLK:INSTD_LOGIC;SEC_L:OUTSTD_LOGIC_VECTOR(3DOWNTO0);SEC_H:OUTSTD_LOGIC_VECTOR(3DOWNTO0);MIN_L:OUTSTD_LOGIC_VECTOR(3DOWNTO0);MIN_H:OUTSTD_LOGIC_VECTOR(3DOWNTO0);DONE:OUTSTD_LOGIC);ENDENTITYJSQ;ARCHITECTUREARTOFJSQISCOMPONENTDCNT10ISPORT(CLK,LOAD,ENA:INSTD_LOGIC;DATAIN:INSTD_LOGIC_VECTOR(3DOWNTO0);CQ:OUTSTD_LOGIC_VECTOR(3DOWNTO0);CARRY_OUT:OUTSTD_LOGIC);ENDCOMPONENTDCNT10;COMPONENTDCNT6ISPORT(CLK,LOAD,ENA:INSTD_LOGIC;DATAIN:INSTD_LOGIC_VECTOR(3DOWNTO0);CQ:OUTSTD_LOGIC_VECTOR(3DOWNTO0);CARRY_OUT:OUTSTD_LOGIC);ENDCOMPONENTDCNT6;SIGNALNEWCLK:STD_LOGIC;SIGNALS1:STD_LOGIC;SIGNALS2:STD_LOGIC;SIGNALS3:STD_LOGIC;SIGNALS4:STD_LOGIC;BEGINU1:DCNT10PORTMAP(CLK,LOAD,COOK,DATA3(3DOWNTO0),SEC_L,S1);U2:DCNT6PORTMAP(S1,LOAD,COOK,DATA3(7DOWNTO4),SEC_H,S2);U3:DCNT10PORTMAP(S2,LOAD,COOK,DATA3(11DOWNTO8),MIN_L,S3);U4:DCNT6PORTMAP(S3,LOAD,COOK,DATA3(15DOWNTO12),MIN_H,S4);DONE〈=S4ANDS3ANDS2ANDS1;ENDARCHITECTUREART;-—DCNT6.VHDLIBRARYIEEE;USEIEEE.STD_LOGIC_1164。ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYDCNT6ISPORT(CLK:INSTD_LOGIC;LOAD:INSTD_LOGIC;ENA:INSTD_LOGIC;DATAIN:INSTD_LOGIC_VECTOR(3DOWNTO0);CQ:OUTSTD_LOGIC_VECTOR(3DOWNTO0);CARRY_OUT:OUTSTD_LOGIC);ENDENTITYDCNT6;ARCHITECTUREARTOFDCNT6ISSIGNALCQI:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPROCESS(CLK,LOAD,ENA)ISBEGINIFLOAD='1'THENCQI〈=DATAIN;ELSIFCLK'EVENTANDCLK='1'THENIFENA=’1'THENIFCQI=”0000”THENCQI〈="0101";ELSECQI<=CQI-’1';ENDIF;ENDIF;ENDIF;ENDPROCESS;PROCESS(CLK,CQI)ISBEGINIFCLK’EVENTANDCLK='1’THENIFCQI="0000"THENCARRY_OUT<=’1';ELSECARRY_OUT〈='0';ENDIF;ENDIF;ENDPROCESS;CQ<=CQI;ENDARCHITECTUREART;-—DCNT10.VHDLIBRARYIEEE;USEIEEE.STD_LOGIC_1164。ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYDCNT10ISPORT(CLK:INSTD_LOGIC;LOAD:INSTD_LOGIC;ENA:INSTD_LOGIC;DATAIN:INSTD_LOGIC_VECTOR(3DOWNTO0);CQ:OUTSTD_LOGIC_VECTOR(3DOWNTO0);CARRY_OUT:OUTSTD_LOGIC);ENDENTITYDCNT10;ARCHITECTUREARTOFDCNT10ISSIGNALCQI:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPROCESS(CLK,LOAD,ENA)ISBEGINIFLOAD='1'THENCQI<=DATAIN;ELSIFCLK'EVENTANDCLK='1'THENIFENA=’1'THENIFCQI=”0000"THENCQI<=”1001";ELSECQI〈=CQI—’1';ENDIF;ENDIF;ENDIF;ENDPROCESS;PROCESS(CLK,CQI)ISBEGINIFCLK'EVENTANDCLK='1’THENIFCQI=”0000”THENCARRY_OUT<='1';ELSECARRY_OUT<='0';ENDIF;ENDIF;ENDPROCESS;CQ<=CQI;ENDARCHITECTUREART;7.2.5译码器YMQ47—-YMQ47.VHDLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED。ALL;ENTITYYMQ47ISPORT(AIN4:INSTD_LOGIC_VECTOR(3DOWNTO0);DOUT7:OUTSTD_LOGIC_VECTOR(6DOWNTO0));ENDENTITYYMQ47;ARCHITECTUREARTOFYMQ47ISBEGINPROCESS(AIN4)BEGINCASEAIN4ISWHEN"0000"=〉DOUT7〈="0111111";ﻩ--显示0的g~aWHEN"0001”=〉DOUT7<="0000110”;ﻩ--1WHEN"0010"=>DOUT7<=”1011011";ﻩ-—2WHEN”0011”=〉DOUT7<="1001111";ﻩ——3WHEN”0100"=>DOUT7<=”1100110";ﻩ—-4WHEN”0101"=>DOUT7〈=”1101101"; -—5WHEN"0110"=>DOUT7〈="1111101”; --6WHEN"0111"=>DOUT7<="0000111";ﻩ—-7WHEN”1000"=>DOUT7〈=”1111111"; -—8WHEN"1001"=〉DOUT7<=”1101111”;ﻩ--9WHEN”1010”=>DOUT7<="1011110”;ﻩ--dWHEN"1011”=>DOUT7〈="1011100";ﻩ-—oWHEN"1100"=>DOUT7〈="1010100”;ﻩ--nWHEN"1101"=〉DOUT7〈=”1111001”; ——EWHENOTHERS=>DOUT7<=”0000000”;ENDCASE;ENDPROCESS;ENDARCHITECTUREART;7.2。6动态显示电路需要用到的DCNT4和decoder--cntm4。vhdlibraryieee;useieee.std_logic_1164。all;useieee。std_logic_unsigned。all;entitycntm4isport(ci:instd_logic;nreset:instd_logic;clk:instd_logic;co:outstd_logic;qcnt:bufferstd_logic_vector(3downto0));endcntm4;architecturebehaveofcntm4isbeginco<='1’when(qcnt="0011”andci='1’)else'0’;process(clk,nreset)beginif(nreset=’0’)thenqcnt<="0000”;elsif(clk'eventandclk=’1’)thenif(qcnt=3)thenqcnt<="0000";elseqcnt<=qcnt+1;endif;endif
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 借款担保合同书是不是借款合同书
- 二零二五版工业用地租赁协议合同
- 二零二五鱼塘承包合同范文集合
- 二零二五婚礼服务合同书范例
- 二零二五厂房及设施出租协议
- 商业投资合作保密协议书
- 【中学】【育人故事】从“遣回去”到“留下来”
- 中心城区积涝治理与排水管网升级可行性分析
- 游客服务中心升级改造方案研究
- 文库发布:SQL-Server-2014教学课件
- 男装商场商品知识培训
- 项目式学习在小学数学教学中的应用
- 锌冶炼发展现状及趋势
- 彩票行业风险管理-深度研究
- 加油站的智能监控与安全保障
- 烟草证委托经营管理协议书
- 2025猪场转让合同范本
- 生育友好医院建设指南2024
- 2025年度智能零售货柜租赁与运营管理合同范本3篇
- 中医外治法课件
- 常见血管活性药物的临床应用及注意事项考核试题及答案
评论
0/150
提交评论