


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、FPGA吉课论文学院:信息工程学院专业:电子信息工程班级:10级2班姓名:王君学号:1067118241刖曰随着电子技术的发展,人们的生活水平和质量不断提高,生活设备的智能化程度也越来越高,这些都离不开电子产品的进步。现代电子产品在性能提高、复杂度增大的同时,价格却一直呈下降趋势,而且产品更新换代的步伐也越来越快,实现这种进步的主要因素是生产制造技术和电子设计技术的发展。前者以微细加工技术为代表,目前已进展到深业微米阶段,可以在几平方厘米的芯片上集成数千万个晶体管。后者的核心就是ED做术,EDW指以计算机为工作平台,融合应用电子技术、计算机技术、智能化技术最新成果而研制成的电子CADS用软件包
2、,主要能辅助进行三方面的设计工作:IC设计,电子电路设计,PCB设计。本次设计是基于FPGA/CPL敬控脉冲宽度调制信号发生器实现,该系统主要模块有:时钟产生电路模块、JTAG编程连接模块、电源电路模块,通过连线将各个模块进行连接成最小系统,系统精简,实现方便且功能强大,比起传统的信号发生器有着比较明显的优势。本设计立足系统可靠性及稳定性等高技术要求,采用FPGA芯片实现数控脉冲宽度调制信号发生器的FPGA/CPLD2:计,其电路设计比较简单,外围电路少,易于控制和检查,较传统的分离元件实现方式有着明显的优势,尤其是其设计电路实现周期,其抗十扰及调试过程都很简单。FPGAT绍FPGA(Fiel
3、dProgrammableGateArray)可以达到比PLD更高的集成度,它是在PAL.GALEPLg可编程器件的基础上进一步发展起来的,具有更复杂的布线结构和逻辑实现。PLD器件和FPGA勺主要区别在于PLD是通过修改具有固定内连电路得逻辑功能来进行编程,而FPGA通过修改一根或多根分割宏单元的基本功能块的内连线的布线来进行编程。它一般由可嵌入式阵列块(EAB、逻辑阵列块(LAB、快速互联通道(FastTrack)、IO单元(IOE)组成。AlteraCycloneII采用全铜层、低K值、1.2伏SRAM:艺设计,裸片尺寸被尽可能最小的优化。采用300毫米晶圆,以TSMCM功的90nm工艺
4、技术为基础,CycloneII器件提供了4,608到68,416个逻辑单元(LB,并具有一整套最佳的功能,包括嵌入式18比特x18比特乘法器、专用外部存储器接口电路、4kbit嵌入式存储器块、锁相环(PLL)和高速差分I/O能力。CycloneII器件扩展了FPGM成本敏感性、大批量应用领域的影响力,延续了第一代Cyclone器件系列的成功。由于FPG必基于查找表(LUE结构的器件,且每个LAB由10个LE组成,一个LE由LUT和寄存器组成,适合于时序逻辑电路的设计。1设计内容设计一个能够均匀输出给定占空比的脉冲宽调制信号,通过两个可加载8位计数器lcnt8.v实现本设计。若初始时D触发器输出
5、为高电平时,U1不能加载A,若已复位只能完成0到255的加计数,在计到255时产生输出cao1,经反相后异步活除d触发器,经反相后,ld1变高,使u1完成加载A,但只能保持加载状态,直到u2计数完成,产生cao2使d触发器输出高电平,ld1变低,u1开始从A的加计数,计到255后,产生输出cao1,经反相后异步活除d触发器,如此循环。D触发器输出高电平使u2加载,但持续的高电平维持加载使u2计数状态维持在B,只有当d触发器活除后,u2开始从B的加计数,计到255后产生输出cao2,使D触发器输出为高电平,如此循环。此设计选用的是8位的计数器进行加计数功能,从0加到255。计数器是数字系统中用的
6、较多的基本逻辑器件,它的基本功能是统计时钟脉冲的个数,即实现计数操作,它也可用与分频、定时、产生节拍脉冲和脉冲序列等。例如,计算机中的时序发生器、分频器、指令计数器等都要使用计数器。计数器的种类很多。按构成计数器中的各触发器是否使用一个时钟脉冲源来分,可分为同步计数器和异步计数器;按进位体制的不同,可分为二进制计数器、十进制计数器和任意进制计数器;按计数过程中数字增减趋势的不同,可分为加法计数器、减法计数器和可逆计数器;还有可预制数和可编计数器等等。程序:A、代码顶层:模块pwm_gn.v/PWMgeneratormoduled(clk,rst_n,a,b,pwmout,ld1,ld2,cao
7、1,cao2,pwmint);/pwm_gninputclk;/systemclockinputrst_n;/resetinput7:0a;/pulsewidthcontrolinputinput7:0b;/pulsewidthcontrolinputinoutregld1;inoutregld2;outputpwmout;outputcao1,cao2;/onlyforobservation,canberemovedwirecao1;wirecao2;regpwmout;inoutpwmint;regpwmint;/intantiatetwoloadable0255counterlcnt_8
8、u1_lcnt8(.clk(clk),.rst_n(rst_n),.ld(ld1),.d(a),.cao(cao1);lcnt_8u2_lcnt8(.clk(clk),.rst_n(rst_n),.ld(ld2),.d(b),.cao(cao2);/twoloadablecountercontrolandreloadingcontrolalways(posedgecao2orposedgecao1)beginif(cao1=1'b1)beginpwmint<=1'b0;endelseif(cao2=1)beginpwmint<=1'b1;endld1<
9、=!pwmint;ld2<=pwmint;pwmout<=pwmint;endendmoduleB、8位可加载计数器:lcnt8/8bitloadbleincrementcountermodulelcnt8(clk,rst_n,ld,d,cao);inputclk;inputld;input7:0d;inputrst_n;outputcao;reg7:0count;regcao;always(posedgeclk)beginif(!rst_n)begincount<=8'b00000000;endelseif(ld)begincount<=d;endelsebe
10、gincount<=count+1'b1;endendalways(posedgeclk)beginif(count=254)begincao<=1'b1;endelsebegincao<=1'b0;endendendmodulec语言程序:#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintsbitKEY1=P3A4;sbitKEY2=?3人5;sbitKEY3=?3人6;sbitIN1=P1A0;sbitIN2=P1A1;sbitENA=P1A2;sfrldata
11、=0x80;sbitdula=P2A6;sbitwela=P2A7;/sbitlcden=P3A4;/uchartimer,ms,t_set=1;ucharT_N=100;ucharT_N1=100;ucharT_H_N=50;ucharT_H_N1=50;voidmsplay(uchar,uchar);ucharcodex1=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x27,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/ucharcodex2=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xd8,0x
12、80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;ucharcodex3=0xfe,0xfd,0xfb,0xf7,0xef,0xdf;/ucharcodex4=0x01,0x02,0x04,0x08,0x10,0x20;voiddelay(uintz)延时函数uintx;for(x=z;x>0;x-);voidKey_Scan()if(KEY1=0)delay(20);while(!KEY1);T_H_N+;if(T_H_N>=99)T_H_N=99;if(KEY2=0)delay(20);while(!KEY2);T_H_N-;if(T_H_N<=
13、1)(T_H_N=1;if(KEY3=0)(delay(15);while(!KEY3);IN1=IN1;IN2=IN2;voidMotor_Init()(ENA=0;IN1=1;IN2=0;voidTimer0_Init()(TMOD=0X12;TH0=(256-50);TL0=(256-50);/TH1=(65535-T_H)/256;/TL1=(65535-T_H)%256;EA=1;ET0=1;TR0=1;voidmain()(uchark3,k2,k1,k0;Timer0_Init();Motor_Init();while(1)(k2=T_H_N/10;k3=T_H_N%10;k1=
14、0;k0=0;msplay(k0,2);msplay(k1,3);msplay(k2,4);msplay(k3,5);Key_Scan();voidtimer0()interrupt1TR0=0;/TH0=(65536-50)/256;/TL0=(65536-50)%256;T_H_N1-;if(0=T_H_N1)ENA=0;T_H_N1=1;T_N1-;if(T_N1=0)ENA=1;T_N1=100;T_H_N1=T_H_N;TR0=1;voidmsplay(uchary1,uchary2)ldata=x1y1;dula=1;dula=0;delay(1);ldata=x3y2;wela=
15、1;wela=0;delay(1);ldata=0x00;dula=1;dula=0;delay(1);ldata=0x0ff;wela=1;wela=0;delay(1);2仿真结果A=12,B=12的输出波形A=136,B=128的输出波形3总结本设计采用ED做术,通过FPGAK片实现了数控脉冲宽度调制信号发生器的设计,本文采用Verilog硬件描述语言来说明电路,完成对电路的功能仿真。通过D触发器及两个可加载8位计数器lcnt8.v实现本设计。与传统的设计方式相比,本设计由丁采用了FPGAK片来实现,它将大量的电路功能集成到一个芯片中,并且可以由用户自行设计逻辑功能,提高了系统的集成度和
16、可靠性。硬件描述语言HDL是相对丁一般的计算机软件语言,如:C、PASCA而言的。HDL语言使用与设计硬件电子系统的计算机语言,它能描述电子系统的逻辑功能、电路结构和连接方式。设计者可利用HDL程序来描述所希望的电路系统,规定器件结构特征和电路的行为方式;然后利用综合器和适配器将此程序编程能控制FPG呼日CPLErt部结构,并实现相应逻辑功能的的门级或更底层的结构网表文件或下载文件。目前,就FPGA/CPLW发来说,比较常用和流行的HDL主要有ABEL-HDLAHD岛VHDL在本次设计中,我们完成本系统设计的要求及功能。在设计开始前我们对各个模块进行了详细的分析和设计准备工作,设计过程中,我们相互协调,积极参与完成各个技术实现的难点。通过本次设计,我们在对EDA这门技术上有了更深刻的认识,也从实践的例子中去感受到了ED双计给我们设
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论