您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 广告经营 > 浅谈单片机CPLDFGPA在广播系统的运用
1浅谈单片机、FPGA、CPLD的特点及在广播系统中的运用广电总局501台王荣飞摘要本文以单片机、FPGA/CPLD在控制领域的特点及优势为基础,介绍了单片机、FPGA/CPLD的使用方法,通过TBH522短波发射机自动调谐系统的设计例子,进一步阐述利用各器件实现大型控制系统的原理。关键字:单片机FPGACPLD一、前言随着科技的进步和深入,我们传统的广播电视事业经历着一场深刻的变革和冲击,传统模拟设备正被新兴的数字设备及多媒体设备所取代。如何在现有设备的基础上完成系统数字化、自动化和网络化改造,提高设备的利用率和使用寿命,是我们面临的课题。笔者一直从事发射机自动控制系统开发,根据用户的需求,设计了很多单片机配合CPLD/FPGA实现相应功能的控制系统,现将笔者的一些使用心得与大家分享,抛砖引玉,和大家在控制领域共同探讨。二、单片机、FPGA、CPLD在控制领域的特点及优势1、单片机特点单片机亦称单片微电脑或单片微型计算机。它是把中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、输入/输出端口(I/0)等主要计算机功能部件都集成在一块集成电路芯片上的微型计算机。自问世以来从工业测控对象、环境、接口特点出发,向着增强控制功能、提高工业环境下的可靠性、灵活方便的构成应用计算机系统的界面接口的方向发展。2、FPGA/CPLD特点(1)、都是可编程ASIC器件,具有体系结构和逻辑单元灵活、集成度高。(2)、并有丰富的触发器和I/O引脚,可实现较大规模的逻辑电路,编程也很灵活,采用VHDL硬件描述语言完成。(3)、采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容,适用范围宽。2(4)、是ASIC电路中设计周期最短、开发费用最低、风险最小的器件。3、单片机和FPGA/CPLD的在控制领域里各自的优势单片机属总线控制器,具有教大的数据运算能力,但逻辑运算却是单片机的弱项,特别是处于总线控制器的弊端,不能即时抓住瞬态变化的信息量;而FPGA/CPLD则是由大量门电路组成,通过VHDL硬件编程语言将程序写入FPGA/CPLD,构成用户所需要的各种逻辑电路,所以根据系统需求,将数据运算及循环控制设计到单片机内完成,而逻辑电路则设计到FPGA/CPLD内完成,双方通过单片机对FPGA/CPLD进行读写控制而实现整体的控制。尽管FPGA和CPLD都是可编程ASIC器件,有很多共同特点,但由于FPGA和CPLD结构上的差异,具有各自的特点(1)、FPGA的集成度比CPLD高,具有更复杂的布线结构和逻辑实现。(2)、CPLD比FPGA使用起来更方便。CPLD的编程采用E2PROM或FASTFLASH技术,无需外部存储器芯片,使用简单,可分为在编程器上编程和在系统编程两类;FPGA大部分是基于SRAM编程,编程信息在系统断电时丢失,每次上电时,需从器件外部将编程数据重新写入SRAM中,所以FPGA的编程信息需存放在外部存储器上,使用方法复杂,但FPGA比CPLD具有更大的灵活性。(3)、CPLD通过修改具有固定内连电路的逻辑功能来编程,及CPLD是逻辑块级编程,并且其逻辑块之间的互联是集总式的,FPGA主要通过改变内部连线的布线来编程,及FPGA是门级编程,并且CLB之间采用分布式互联;CPLD的连续式布线结构决定了CPLD的速度比FPGA快,并且具有较大的时间可预测性,同时也确定了CPLD更适合完成各种算法和组合逻辑,FPGA更适合于完成时序FPGA逻辑。三、单片机的使用方法单片机发展到现在,品种繁多,在此以MSP4301611F的一些应用来说明,此单片机是德州仪器(TI)公司推出的MSP430系列超底供耗16位混合信号处理器,工作电压为1.8V-3.6V,通常设计工作电压为3.3V;16位RISC结构,125ns指令周期;内置3通道DMA,并拥有6组I/O端口,可根据需要设计为中断端口;12位A/D带采样保持和双12位D/A同步转换,片内具有硬件乘法器和10进制运算器,极大的提高系统算术运算能力;带有2个串行通信,USART0和USARI13接口;拥有10KBRAM空间和48KBFLASH存储器。1、A/D、D/A转换:因MSP4301611F拥有12位A/D带采样保持和双12位D/A同步转换,在需要设计AD转换和DA转换的场所,可无需设计A/D、D/A专用芯片,提高系统集成度,降低功耗,减小开发成本。(1)、A/D转换:此单片机拥有8路12位A/D转换,及A0-A7,共用一个转换内核ADC12,模拟多路器分时地将多个模拟信号接通,即每次进行一个信号的采样转换,并将通过对应的控制寄存器ADC12MCTL转换结果保存在存储器ADC12MEM中;转换时拥有4种ADC12转换模式,单通道单次转换;系列通道单次转换;单通道多次转换;系列通道多次转换;本文以系列通道单次转换为例说明A0-A5进行模数转换。bis.b#3FH,&P6SEL;A0-A5模数转换功能开,mov#ADC12ON+REFON+REF2_5V+SHT0_6,&ADC12CTL0;启动ADC12,使用内部2.5V参考电压mov#SHP+CONSEQ_3,&ADC12CTL1;使用采样定时器,系列单次通道转换mov.b#INCH_0+SREF_1,&ADC12MCTL0;使用A0,Vref+mov.b#INCH_1+SREF_1,&ADC12MCTL1;使用A1,Vref+mov.b#INCH_2+SREF_1,&ADC12MCTL2;使用A2,Vref+mov.b#INCH_3+SREF_1,&ADC12MCTL3;使用A3,Vref+mov.b#INCH_4+SREF_1,&ADC12MCTL4;使用A4,Vref+mov.b#INCH_5+SREF_1+EOS,&ADC12MCTL5;使用A5,Vref+,最后系列bis#3FH,&ADC12IE;使能中断ADC12IFG.5bis#ENC,&ADC12CTL0;使能转换eint;使能中断bis#ADC12SC,&ADC12CTL0;启动转换bis#CPUOFF,SR;低功耗等待转换完成ORG0FFEEh;ADC12中断向量DWADC12ISR(2)、D/A转换:ADC数模转换内核是由一个1位、2阶的调节器实现,调节器的一位比较器通过调节器频率量化输入模拟信号,产生的1位数据流由数字滤4波器平均分配作为转化结果。此单片机带有双12位D/A同步转换,分别是A6、A7;有2种转换模式,分别是单次转换和连续转换,本文以单次转换为例说明A6实现D/A转换方法。movR14,DAC12_0DAT;将数字信号送入模数转换寄存器mov#REF2_5V+REFON,&ADC12CTL0;DAC12内部参考电压2.5Vmov#DAC12IR+DAC12AMP_5+DAC12ENC,&DAC12_0CTLeint;使能中断2、利用USART0实现异步通信基本所有单片机都能通过USART硬件直接实现UART异步通信和SPI同步通信,USART模块包含4个部分。波特率部分:及控制串行通信数据接收和发送的速度;波特率由分频因子N和送到分频计数器的时钟(BRCLK)来确定,及N=BRCLK/波特率,在此N由3个计数器构成,整数部分是&U0BR0、&U0BR1,小数部分是&U0MCTL。通过设置N来确定通信波特率。接收部分:接收串行输入数据。发送部分:发送串行输出的数据。接口部分:完成串/并、并/串转换部分。本文以USART0模块,在8M的工作频率下,按照115200bit的速度,8-bit字符,奇校验,1位停止位的方式完成异步通信。(1)、初始化RS232通信init_232:bis.b#0x1,&U0CTL;bis.b#0x90,&U0CTL;8-bit字符,奇校验,1位停止位CLEAR_Fbic.b#0x2,&IFG1;清除OSCFault标识mov.b#0x0F,R14;T1cmp.b#0x1,R14;jncT2add.b#0xFF,R14jmpT1T2jcCLEAR_F5mov.b#0x30,&U0TCTL;uclk=smclkmov.b#0xA0,&U0BR0;在8MHz下进行115200波特率通讯mov.b#0x1,&U0BR1;mov.b#0xAD,&U0MCTL;bic.b#0x1,&U0CTL;clr.b&IFG1bis.b#0xC0,&ME1bis.b#0x40,&IE1;使能接收bis.b#0x30,&P3SEL;设置TX,RX(RS485通信时用)and.b#0xCF,&P3DIRbis.b#0x10,&P3DIRclr.b&Send_Buf;清零发送缓冲ret(2)、发送数据:比如将R10的数据通过串口发送出去,其程序如下。rs485_SendData:bis.b#0x8,&P3OUT;使能发送mov.bR10,&U0TXBUF;写入发送数据T3bit.b#0x1,&U0TCTL;等待发送完成jncT3bic.b#0x8,&P3OUT;禁止发送ret(3)、接收数据:本程序设置通过中断方式接收数据,及在串口有活动时,将启用串行接收中断。ORG0fff2H;USART接收中断DWdata_Receive;接收数据入口data_Receive:MOV.B&U0RXBUF,R10;将接收数据缓冲区数据保存到R10RETI四、FPGA、CPLD的使用方法:FPGA/CPLD都属于可编程ASIC器件,集成度高,通过VHDL硬件编程语言将6程序写入,构成用户所需要的各种较大规模的逻辑电路。使用时可根据系统需求选择合适的FPGA/CPLD,目前世界上有十几家生产CPLD/FPGA的厂商,最大的三家是ALTERA、XILINX、LATTICE。现通过几个数字电路说明FPGA和CPLD的使用方法。1、端口定义FPGA/CPLD具有大量的可用I/O,用户根据硬件需求,在电路板上将可用I/O设计到相应的输入输出引脚上,然后针对使用的I/O进行定义,通过用户定义的管脚利用VHDL硬件编程语言实现相应的输入/输入及内部各种逻辑功能,定义管脚分2个文件,在VHD文件里定义管脚名字及输入/输出方向。如下程序定义了18个信号,其中P2.0-P2.7为8个输入/输出双信号,P1.0-P1.7为8个输入信号,x、y为2个输出信号,z为一个输出信号。entityzdtxfpgais;端口定义模块开始Port(p2:inoutstd_logic_vector(0to7);;P2口为输入输出信号p1:instd_logic_vector(0to7);;P1口为输入信号z:outstd_logic;;z为输出信号x:instd_logic;;x为输入信号y:instd_logic);;y为输入信号endzdtxfpga;;端口定义模块结束信号名字和I/O特性定义完成后,还得定义信号在FPGA上对应的管脚,管脚定义在UCF文件里,比如下面的描述定义P2.0和x。NETp20LOC=p12;;定义12脚为P2.0NETxLOC=p100;;定义100脚为x2、利用FPGA/CPLD实现数字滤波:众所周知,在我们广播控制系统上最大的问题是干扰,处理干扰的手法也很多,可靠接地、采用电容电感对输入输出信号进行滤波等,但以上的处理措施都不能彻底解决干扰问题,在此利用FPGA内逻辑功能实现精确的滤波处理。如下图所示,CLK为系统时钟,X为输入信号,底电平为正常,当X信号出现高电平后,Y根据系统时钟进行计数,当Y的记数脉冲超过6个脉冲后X故障,Z信号为1,反之则为0,若小于6个脉冲则Y自动清零;T0时刻,X信号正常,Z为7底电平;T1时刻,X出现高电平,Y开始计数,但Y计数到4时X出现底电平,Y自动清零,属于干扰信号;T3时刻,X在次出现故障,Y开始记数,当Y计数到6时,说明X出现故障,Z电平翻转为1,属故障信号;当T4时刻,X在次为底电平,Y计数清零,Z电平翻转为0。CLKXT1T0T2T3T4Z以上电路采用VHDL描述如下:Y信号计数/清零控
本文标题:浅谈单片机CPLDFGPA在广播系统的运用
链接地址:https://www.777doc.com/doc-2314038 .html