1、 基于FPGA的电子称设计基于FPGA的实用电子称摘要:该设计以现场可编程门阵列FPGA为核心控制部件,并基于超高速硬件描述语言VHDL在Xilinx公司的SpartanE系列的XC2S100E芯片上编程实现;系统的硬件部分包括FPGA最小系统板,数据采集、人机交互界面三大部分。最小系统部分主要是扩展了外部数据存储器,数据采集部分由压力传感器、信号的前级处理和A/D转换部分组成。人机界面部分为键盘输入 ,点阵式液晶显示,软件基于VHDL语言实现了本设计的全部控制功能,包括基本的称重功能,和发挥部分的显示购物清单的功能,并增加了时钟、过载提示欠量程提示、语音提示等创新功能。整机系统结构简单,使用
2、方便。功能齐全,精度高,具有一定的开发价值。关键词:电子称,计价,压力传感器,FPGA,VHDL Design of applied Electronic-balance Based on FPGATutor : Yan WangWeiqing XU Zhengyu Tang Renfu Lan(Electric Engineering College NanHua University Hengyang Hunan,China)Abstract: This is a design for applied electronic-balance which is based on FPGA(Fi
3、eld Programmable Gate Array). The design will be achieved in the Spartan-II E-XC2S100E chip of Xilinx corporation by programming with the VHDL(Very High-speed Description Language) The hardware of the system includes the minimum system of FPGA, the data collector, the interface of person and machine
4、 . The minimum systems function mainly is to expand the storage,The data collector is composed of pressure sensor and A/ D convertor,The interface of persom and machine includes keyboard and LCD display.The software will achieve all control functions of this design according to the language of VHDL.
5、This functions is including to weigh the function basically, and the function of the shopping detailed list. Besides, we adding several expanding functions such as displaying clock and prompting when the matter is overload .The structure of the whole machine is simple, the usage is convenience., the
6、 accuracy is high, It is worth of empoldering to this applied electronic-balance.Keyword:The electronic balance, Pressure sensor, FPGA, VHDL目录第一章 系统方案的设计41.1电子称的设计要求41.1.1基本要求41.1.2 发挥部分41.1.3创新部分41.2 设计的基本思路41.3 系统方案比较和论证41.1.3控制器41.3.2前级放大器51.3.3 A/D转换器61.3.4显示输出电路61.4 系统组成7第二章 单元电路设计72.1 称重传感器72.
7、2 前端信号处理82.3 A/D转换电路92.4主控制控制电路102.5人机交互界面112.5.1键盘接口电路112.5.2 LCD显示接口电路122.5.3 LED数码管显示电路122.6 日历时钟电路132.7 电源电路142.8 其它扩展电路142.8.1 通讯接口电路142.8.2 语音电路152.8.3 报警电路16第三章 系统软件的设计163.1开发软件及编程语言简介163.2系统软件的设计163.1.1软件率程序流程163.1.2 VHDL模块设计173.2.3程序设计顶层映射原理193.3 程序清单及仿真19第四章 系统测试214.1测试仪器清单214.2测试方法214.3测试
8、结果和误差分析214.3.1测试结果214.3.2误差计算及分析22第五章 设计总结22参考文献22附录 主要元器件清单23附录2 印制板图23附录3 程序清单24第一章 系统方案的设计1.1电子称的设计要求1.1.1基本要求 1) 能用简易键盘设置单价,加重后能同时显示重量、金额和单价;2) 重量显示:单位为公斤;最大称重为9.999公斤,重量误差不大于0.005公斤;3) 单价金额及总价金额显示:单价金额和总价金额的单位为元,最大金额数值为9999.99元,总价金额误差不大于0.01元;4) 具有去皮功能和总额累加计算功能。1.1.2 发挥部分能显示购物清单,自拟10种商品名称或代号,清单
9、内容包括:商品名称,数量,单价,金额,本次购物总金额。1) 清单内容的商品名称等可使用代号显示;2) 清单内容增加购货日期和收银员编号;3) 清单内容在(2)的基础上增加售货单位名称(自拟),且全部内容采用中文显示。1.1.3 创新部分 在完成基本要求和题目所提出的发挥部分要求的情况下,考虑到电子称实际应用的需要,又增加了时钟功能,另外由于实际当中,称可以有一定量的过载,但不能超出要求的范围,为此我们还设计了过载提示功能。1.2 设计的基本思路题目要求设计一个实用电子称,按照设计的基本要求,系统可分为三大模块,数据采集模块、控制器模块、人机交互界面模块。其中数据采集模块完成对来自稳重传感器的电
10、压信号的检测、放大、AD转换。此时的数字信号送给控制器处理,由控制器完成被测物体重量的判断、显示等功能。此部分对软件的设计要求比较高,系统的大部分功能都需要软件来控制。在扩展功能上,本设计增加了一个时钟芯片(PCF8563)用以显示购物日期/时钟,一个声光报警电路用以过载提示。1.3系统方案比较和论证1.3.1控制器方案一 基于51系列单片机来实现。目前单片机技术比较成熟,功能也比较强大,被测信号经放大整形后送入单片机,由单片机对测量信号进行处理并根据相应的数据关系译码显示出被测物体的重量,由于系统需要的按键较多,因此要加一个键盘显示管理芯片(ZLG7289)原理方框图如图1.3.1所示。单片
11、机控制适合于功能比较简单的控制系统,而且其具有成本低,功耗低,体积小算术运算功能强,技术成熟等优点.但其缺点是外围电路比较复杂,编程复杂。使用这种方案会给系统设计带来一定的难度。MCUAT89S52放大器AD转换器显示器键盘电路时钟芯片传感信号ZLG7289图1.3.1 单片机实现方案原理框图方案二 采用现场可编程门阵列(FPGA)为控制核心采用现场可编程门阵列(FPGA)为控制核心,利用EDA软件编程,下载烧制实现。系统集成于一片Xilinx公司的Spartan系列XC2S100E芯片上,体积大大减小、逻辑单元灵活、集成度高以及适用范围广等特点,可实现大规模和超大规模的集成电路。采用FPGA
12、测频测量精度高,测量频率范围大,而且编程灵活、调试方便,本设计要求的精度较高,所以要求系统的稳定性要好,抗干扰能力要强。因此,我们决定采用方案二,即采用FPGA为控制核心。1.3.2前级放大器压力传感器输出的电压信号为毫伏级,所以对运算放大器要求很高。我们考虑可以采用以下几种方案可以采用:方案一 利用普通低温漂运算放大器构成多级放大器。普通低温漂运算放大器构成多级放大器会引入大量噪声。由于A/D转换器需要很高的精度,所以几毫伏的干扰信号就会直接影响最后的测量精度。所以,此中方案不宜采用。方案二 由高精度低漂移运算放大器构成差动放大器。差动放大器具有高输入阻抗,增益高的特点,可以利用普通运放(如
13、OP07)做成一个差动放大器。此方案原理图如图1.3.2所示。 图1.3.2 高精度运算放大器电路图电阻R1、R2电容C1、C2、C3、C4用于滤除前级的噪声,C1、C2为普通小电容,可以滤除高频干扰,C3、C4为大的电解电容,主要用于滤除低频噪声。优点:输入级加入射随放大器,增大了输入阻抗,中间级为差动放大电路,滑动变阻器R6可以调节输出零点,最后一级可以用于微调放大倍数,使输出满足满量程要求。输出级为反向放大器,所以输出电阻不是很大,比较符合应用要求。缺点:此电路要求R3、R4相等,误差将会影响输出精度,难度较大。实际测量,每一级运放都会引入较大噪声。对精度影响较大。方案三 采用专用仪表放
14、大器INA126实现。此芯片内部采用差动输入,共模抑制比高,差模输入阻抗大,增益高,精度也非常好,且外部接口简单。INA126接口如图1.3.3所示。可以通过改变的大小来改变放大器的增益。 图1.3.3 INA126外部接线图基于以上分析,我们决定采用方案三实现前级放大功能,即制作方便而且精度很好的专用仪表放大器INA126。 1.3.3 A/D转换器由上本设计使用的压力传感器和精度的分析可知:A/D转换器误差应在以下12位A/D精度:10Kg/4096=2.44g14位A/D精度:10Kg/16384=0.61g考虑到其他部分所带来的干扰,12位A/D无法满足系统精度要求。所以我们需要选择1
15、4位或者精度更高的A/D。方案一 逐次逼近型A/D转换器,如:ADS7805、ADS7804等。逐次逼近型A/D转换,一般具有采样/保持功能。采样频率高,功耗比较低,是理想的高速、高精度、省电型A/D转换器件。高精度逐次逼近型A/D转换器一般都带有内部基准源和内部时钟,基于FPGA构成的系统设计时仅需要外接几个电阻、电容。但考虑到所转换的信号为一慢变信号,逐次逼近型A/D转换器的快速的优点不能很好的发挥,且根据系统的要求,14位AD足以满足精度要求,太高的精度就反而浪费了系统资源。所以此方案并不是理想的选择。方案二 双积分型A/D转换器:如:TLC7135/ICL7135、ICL7109等。双
16、积分型A/D转换器精度高,但速度较慢(如:TLC7135),具有精确的差分输入,输入阻抗高(大于103M),可自动调零,超量程信号,全部输出于TTL电平兼容。双积分型A/D转换器具有很强的抗干扰能力。对正负对称的工频干扰信号积分为零,所以对50HZ的工频干扰抑制能力较强,对高于工频干扰(例如噪声电压)已有良好的滤波作用。只要干扰电压的平均值为零,对输出就不产生影响。尤其对本系统,缓慢变化的压力信号,很容易受到工频信号的影响。故而采用双积分型A/D转换器可大大降低对滤波电路的要求。作为电子秤,系统对AD的转换速度要求并不高,精度上14位的AD足以满足要求。另外双积分型A/D转换器较强的抗干扰能力
17、和精确的差分输入,低廉的价格。综合的分析其优点和缺点,我们最终选择了方案二,即使用TLC7135对信号进行AD转换。1.3.4显示输出电路方案一 全部采用数码管显示,数码能显示时钟,以及被测物体的重量等信息,此方案显示直观,而且编程简单,但若要同时显示单价,金额售货员编号等诸多信息则需要要大量的数码管,而且不能显示中文。由此增加了电路的复杂程度。也加大了编程的难度。方案二 使用LED与字符型LCD相结合显示。考虑到系统要求显示的信息量较多,可以用LED与LCD分别显示不同信息,LED可以显示时钟和特重量,LCD采用带中文字库的144*32点阵式液晶显示器系列: LM3037,,可以设置显示单介
18、,金额,中文,购物日期等。LCD具有低功耗、可视面大、画面友好抗干扰能力强等功能,在显示技术已得到广泛应用。由上述分析综合,我们采用了方案二,让其各自完成相应的显示任务。1.4系统组成经过方案比较和论证,最终确定的系统组成框图如图1.4.1所示。从图中可以看到系统的基本工作流程和各单元电路所用到的核心器件,其中控制器采用Xilinx公司可编程器件FPGA为核心,基于ISE软件平台,采用VHDL编程实现数据处理、LED和LCD驱动、时钟芯片的I2C通讯、键盘控制等模块,其它单元电路在前面都有所介绍。图1.4.1 电子称系统的组成结构图第二章 单元电路设计2.1 称重传感器按照设计的要求,称重范围
19、09.999Kg,重量误差不大于Kg,考虑到秤台自重、振动和冲击分量,还要避免超重损坏传感器,所以传感器量程必须大于额定称重(9。999Kg)。采用的是湖南宇航科技限公司生产的LS-1型传感器,表2。1。1为称重传感器的技术指标。其量程为20Kg,精度为,满量程时误差0.002Kg。可以满足本系统的精度要求。其原理如图2.1.1所示。表2.1.1 LS-1型传感器的技术指标灵敏度mv/v10.10(13kg)20.10(625kg)非线性%FS0.02重复性0.02蠕变%FS/30min0.02零点输出%FS1零点温度系数%FS/100.02输入电阻42015输出电阻3503绝缘电阻M5000
20、供桥电压V10(DC/AC)MAX:15(DC/AC)温度补偿范围1050允许温度范围2060允许过负荷%FS150连接电缆mm4400连接方式输入:红()、黄() 输出:蓝()白()图2.1.1 称重传感器电桥原理图LS-1称重传感器是利用电阻应变原理构成,当外力F直接作用在贴有R1,R2,R3,R4四片应变的弹性体上时,弹性体发生变形,电阻应变片的阻值发生变化,致使电桥发失去平衡,在R1、R3输入额定桥压时,R2、R4上刚有与外力成正比的电压信号输出。输出信号电压可由下式给出: 2.2 前端信号处理由于稳重传感器输出的信号为毫伏级信号,比AD转换器的输入信号低2-3个数量级,故需要设计一个
21、前置放大器。经过方案比较和论证,我们选择了仪用放大器INA126,构成的放大器及去皮电路。其电路原理图如图2.2.1所示。图2.2.1 前置放大硬件电路图图中,通过调节RAD1的阻值来改变放大倍数。其放大增益为微弱信号Vi1和Vi2被分别放大后从INA126的第6脚输出。A/D转换器TLC7135的输入电压变化范围是-2V+2V,传感器的输出电压信号在020mv左右,因此放大器的放大倍数在200300左右,可将R接成100K的电位器。由于TLC7135对高频干扰不敏感,所以滤波电路主要针对工频及其低次谐波引入的干扰。因为压力信号变化十分缓慢,所以滤波电路可以把频率做得很低。图中的LM741的输
22、出端与INA126的地端相连,LM741的2脚与6脚相连构成电压跟随器,R4与正负电源相接,通过改变R4的阻值可使VO与 RET之间的压差变化,从而实现调零、去皮的功能。2.3 A/D转换电路TLC7135是一种双积分式4位半单片A/D转换器,其工作原理是将输入电压转换成时间(脉冲宽度信号)或频率I俯冲频率),再通过定时器(计数器)获得数字信号。其主要性能是:i. 具有高输入阻抗(109),对被测电路几乎没有影响;ii. 具有自动校零和自动判别信号极性;iii. 有超、欠输出信号;iv. 采用位扫描与BCD码输出。A/D转换电路如图2.3.1所示。由于TLC7135内部没有振荡器,所以需要外接
23、。但A/D转换器精度与时钟频率的漂移无关。正向积分时间T1和反向积分时间T2按相同比例增加并不影响测量的结果。ICL7135的时钟频率典型值为200kHz最高允许为1200kHz,时钟频率越高,转换速度越快。每输出一位BCD码的时间为200个时钟周期,选通脉冲位于数据脉冲的中部,如果时钟频率太高,则数据的接受程序还没有接受完毕,数据就已经消失了。考虑到此系统频率要求不是太高,因此我们取时钟频率250kHz。对于这个时钟频率,本设计由FPGA的50M晶振分频得到,既减少了硬件电路的设计,又提高了FPGA的利用率。 图2.3.1 A/D转换电路原理图在设计中,TLC7135的所需的基准电源由VCC
24、经过三端可调稳压器LM317稳压后提供,C8、C9为滤波电容。图中C2是基准电容;C4和R9为积分元件;C5为自零电容;R11和C7组成标准的滤波网络;R10、C6和DW1、DW2组成输入过压保护电路;R7为基准电压调节电位器,可以根据需要显示的满度值选择基准电压的大小,本设计选择的基准电压为1.0000V,它们的关系是;满度值为基准电压的两倍。由于A/D转换器精度与外接的积分电阻、积分电容的精度无关,故可以降低对元件质量的要求。不过积分电容和积分电容的介质损耗会影响到A/D转换器的精度,所以应采用介质损耗较小的聚丙乙烯电容2.4主控制控制电路 本设计以Xilinx公司的SpartanE系列的
25、XC2S100E芯片为控制核心,FPGA最小系统为控制器实现电子称的各项功能。FPGA器件采用现场可编程单元阵列LCA结构,它由三个可编程基本模块组成:输入/输出模块IOB阵列、可配置逻辑块CLB阵列及可编程互连网络PI。配置逻辑功能块CLB的可编程逻辑单元,由分层的通用布线通道(Rouning Channel)连接,同可编程输入输出功能块围绕来实现,基中CLB提供实现逻辑功能的逻辑单元;IOB提供引脚到内部信号线的接口,布线通道则提供CLB和IOB的到连接通道。 设计使用的FPGA最小系统板由XC2S100E、50MHZ晶振、电源部分、指示部分和开关组成,电源部分将5V直流经过TPS7045
26、1转换得到+3。和5V +1。8V的直流电,PROM(XC18V02)是一个掉电存储器,在掉电时可自动保存数据,4个脚双列插针用于其它外部设备连接。图2.4.1为FPGA电路接口图。 系统实现的功能主要通过软件的编程实现,FPGA内部分为四个模块:数据处理模块、LED和LCD驱动模块、I2C通讯模块和键盘控制模块,各模块的设计将在第三章详细介绍。图2.4.1 FPGA最小系统插脚原理图2.5人机交互界面 人机交互界面显示是否直观,控制是否方便直接影响收银员的工作效率和顾客的满意程度,困此设计时经多方考虑,我们尽可能将显示界面友好化,将控制键盘简单化。由于FPGA可利用的引脚多,可以控制键盘、L
27、CD和LEC。不需要外加键盘或显示控制芯片,从而简化了外部电路。而且编程难度不大,容易实现。2.5.1键盘接口电路由于电子称需要设置单价,这就需要一个设置键和十个数字键,还具有去皮、结算、确认、删除等功能,总共需设置16个键(包括一个复位键)。考虑到FPGA负载电流能力有限,因此按键一端均通过10K电阻再与PFGA引脚相连,其电路原理图如图2.5.1所示,图中REL1、RSL2为10K排阻。 图2.5.1 键盘电路原理图(RSL1、RSL2为排阻) 2.5.2 LCD显示接口电路图2.5.2为液晶显示接口电路,其中主要引脚说明如下:4脚为寄存器选择,5脚为读写选择,614脚为数据总丝,15脚为
28、片选端,本设计接VCC使其处于工作状态。16脚悬空,17脚为复位信号输入端,18脚为LCD负压驱动脚。图2.5.2 液晶显示接口电路图2.5.3 LED数码管显示电路 由于LCD为144*32点阵式液晶,显示界面有限,本设计增设的八位共阳极LED数码管能够显示商品的重量和商品的总价,使顾客对自己购买的物品一目了然。其显示的功能主要由软件的设计实现,为了节省系统的资源,本系统采用动态显示。动态显示原理如下:当向LED的段码数据口发送第一个8位数据,这时只有一个数码管显示该数码,延时一段时间后可以发送第二8位数据,显示器分时轮流工作,虽然每次只有一个显示器显示,但由于人的视觉暂留现象,我们仍能感觉
29、到所有显示器都在同时显示。 图2.5.3为显示电路的原理图,考虑到FPGA驱动能力有限,我们采用三极管(9012)驱动数码管,并由74HC138译码器控制位码的选通,只有当使能端G1为1,G2A,G2B为0时译码器有效,故G1接VCC,G2A,G2B接地,否则所有的输出被封锁在高电平上。数码管的位码由FPGA 通过一个低功耗的锁存器(74HC573)给出。2.53 数码管显示电路连接图2.6 日历时钟电路按发挥部分的要求,需要显示购货日期。最简单的办法是在电路中增加了一颗日历时钟芯片。系统采用PCF8563完成时钟设计,PCF8563是Philips公司推出的一款带I2C总线,具有极低功耗的多
30、功能时钟/日历芯片,它具有四种报警功能和定时功能;内部时钟电路、内部振荡电路、内部低电压检测以两线制I2C总线通信方式,不但使用外围电路简洁,而且增加了芯片的可靠性。本系统PCF8563与FPGA接口采用图2.6.1所示接口方案。 图2.6.1 日历时钟电路原理图图中,在1、2端接入32.768kHz的石英晶振,配置成片内振荡器,VDD与地之间接入1个电容供电维持时钟芯片。PCF8563与FPGA接口采用3根口线, FPGA通过I2C总线读取PCF8563的基准时间。其中SCL为时钟输入端,数据随时钟信号同步输入器件或从器件输出; SDA为双向引脚,用于串行数据的输入输出。另外值行一提的是,S
31、DA、SCL、INT均为漏极开路,必须加上拉电阻。 2.7电源电路系统多个电源,FPGA需要5V电源,传感器需要10V以上的线性电源(不能用开关电源,否则称重数据不稳定)。我们采用了三端固定稳压芯片7805和7812为系统提供稳定的电源。这个部分由整流电路、滤波电路、稳压电路等组成,如图2.7.1所示。图中D为桥式整流管,C1、C2为滤波电容,C3、C4为旁路电容,用以改善负载的瞬态响应。在这里只给出了5V电源电路,+12V电源电路与+5V相似,因此不再画出。图2.7.1 +5V电源电路图2.8 其它扩展电路2.8.1 通讯接口电路一般的商用电子称都能与上位机(PC机)进行通讯,可以将大量的商
32、品数据存于上位机,然后通过串口或并口通讯与电子称相连,达到远距离控制的目的。基系统采用RS232串口实现该项功能。RS-232的逻辑电平用正负电压表示,且信号使用负逻辑,逻辑0的电压范围是+5V+15V,而逻辑1的电压范围是-5V -15V,RS-232端口是计算机与其他设备沟通的最常用的接口,不但操作简单,而且价格便宜。FPGA的输入和输出使用的是5V逻辑电平而不是RS-232电压,如何进行两种信号的转换,是连接时需要解决的问题,事实上,解决的方法很简单,只需使用一个MAX232电平转换专用芯片即可,其电路如图2.8.1所示。MAX232包含两个将TTL输入转换成RS-232输出的驱动器,还
33、包含两个将RS-232输入翻译成CMOS输出的接收器,这些驱动器和接收器具有反向的功能。 图2.8.1 RS232通讯接口电路2.8.2 语音电路 语音电路是系统主要扩展功能之一,能够由语音电路发出超载、欠量程或商品重量、价格等语音提示。本系统采用的ISD1420语音电路为美国ISD公司出品的优质单片语音录放电路,ISD1420由振荡器、语音存储单元、前置放大器、自动增益控制电路、抗干扰滤波器、输出放大器组成,能够录放的时间为20秒。一个最小的录放系统仅由一个麦克风、一个喇叭、两个按钮、一个电源、少数电阻电容组成如图2.8.2所示。 图2.8.2语音单元录放电路原理图录音内容存入永久存储单元,
34、提供零功率信息存储,这个独一无二的方法是借助于美国ISD公司的专利直接模拟存储技术(DAST TM)实现的。利用它,语音和音频信号被直接存储,以其原本的模拟形式进入EEPROM存储器。直接模拟存储允许使用一种单片固体电路方法完成其原本语音的再现。不仅语音质量优胜,而且具有断电语音保护功能。2.8.3报警电路 图2.8.3为系统报警电路原理图,除了上一小节中语音可能用于超载和欠量程提示外,系统还设计了两个发光二极管作为超载和欠量程指示灯,使系统更加完善。当系统判断为超载或欠量程时,FPGA给输出一个低电平信号KG(超载)或KQ(超载),从而驱动发光二极管发光提示。 图2.8.3 报警电路原理图第
35、三章 系统软件的设计3.1开发软件及编程语言简介 系统采用硬件描述语言VHDL(Very High Speed Integrated Circuit Hardware Description Language)按模块化方式进行设计,并将各模块集成于FPGA芯片中,然后通过Xiliinx ISE7.1软件开发平台和ModelSim SE6.仿真工具,对设计文件自动的完成逻辑编译、综合及优化、逻辑布局布线、逻辑仿真,最后对FPGA芯片进行编程,实现系统的设计要求。VHDL具有多层次的描述系统硬件功能的能力;支持自顶向下(Top to Down)和基于库(Library-Based)的设计方法;VH
36、DL对设计的描述具有相对独立性。因此,设计者可不必了解硬件结构,从系统设计入手,在顶层进行系统方框图的划分和结构设计,在方框图一级用VHDL对电路的行为进行描述,并进行仿真和纠错,然后在系统一级进行验证,最后再用逻辑综合优化工具生成具体的门级逻辑电路的网表,下载到具体的FPGA器件中去,从而实现可编程逻辑器件的专用集成电路(ASIC)设计。3.2系统软件的设计根据系统的要求,系统的大部分功能都以硬件为基础,通过VHDL编程实现,本设计软件实现的主要能如下1) 设置单价2) 显示重量、金额和单价3) 显示日期、时钟4) 去皮5) 累计6) 汇总7) 语音报警(超载、欠量程)3.2.1软件率程序流
37、程 系统的主程序流程图如图3.2.1所示,该程序流程图是根据系统软件的工作流程得出的,它实际上是各个程序模块的集合,如程序初始化包括系统分频、LCD初始化、语音控制模块初始化等。主程序流程图给出了系统工作的基本过程,描述了信号的基本流向,起到一个向导的作用。 图3.2.1 系统主程序流程图3.2.2 VHDL模块设计1 分频模块本设计所使用的FPGA最小系统的晶振为50MHZ,要把这个频率的晶振应用于实际中,就必须对该频率做一些处理,简单地说就是分频。分频为我们所需要的固定频率值再投于应用中。比如本系统中TLC7135的时钟信号clkout1就是对标准clk进行分频,分频系统为200。所以cl
38、kout1的频率为:50MHZ5KHZ250KHZClk clkoutReset clkout150M Hz/ 200 = 250KHz也就是说每秒发出25K个clkout1信号,且占空比为50%。另外分频模块还给出一个5KH的频供其它模块使用。分频模块示意图如图3.2.2所示。 图3.2.2 分频模块原理图2 I2C通讯模块I2C总线是一种串行数据总线,只有二根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。目前,支持I2C总线通信协议的视频编、解码芯片大多只支持100Kb/s或400Kb/s的传输速度,并且支持两种地址:从设备地址(SCLAVE ADDRESS,8bit),分为读地
39、址和写地址,高7位用于选中芯片, 第0位是读/写控制位(R/W),决定是对该芯片进行读或写操作;内部寄存器单元地址(SUBADRRESS,8bit),用于决定对内部的哪个寄存器单元进行操作,通常还支持地址单元连续的多字节顺序读写操作。I 设计的核心工作是对I2C总线命令及时序的状态划分。在控制核内共设置了两个状态机,分别称为命令状态机和时序状态机。其中,命令状态机用于管理I2C总线上的命令状态,并实现I2C总线具体的读、写操作的命令状态转移过程;时序状态机用于实现I2C总线上启动、停止、读、写、确认等命令的具体时序关系。这样就把控制核从逻辑上分为两个状态机,共同完成最终的总线命令与时序。 I2
40、C程序流程图如下图所示。开始结束发开始信号写器件地址写器件从地址写寄存器地址写入初始化数据发结束信号写器件地址写器件从地址重发开始信号写器件读命令读各个寄存器发结束信号发开始信号写PCF8563各个寄存器读PCF8563各个寄存器 图3.3.3 时钟芯片I2C程序流程图3数据处理模块 数据处理模块包括接收部分,数据RAM,乘法运算模块等。系统将商品的代号、名称、单价等信息存于数据RAM中,当接收到AD转换器的数据(电压信号)后,将其转化为相应重量数据信号,并将其进行乘法运算得到金额,即 金额=重量单价并自动检测商品是否大于称重传感器的量程,如果大于传感器的量程则向报警电路输出一个低电平信号BG
41、,使发光二极管点亮。数码管全部显示零。在进行乘法运算得出结果后,各信息送到LED或LCD译码模块。图3.2.3为数据处理模块结构图。数据RAM乘法模块接收AD转换数据电压-重量转换模块至译码模块判断模块报警信号键盘控制图3.3.4 数据处理模块原理图4. 译码显示模块译码显示模块是建立在内部系统和观测人之间的桥梁。通过译码显示,使输出结果可视化,界面友好化。 该模块由LED译码和LCD译码组成,主要是将各信息量转换成相应的显示代码。LED译码模块是将数字量转换为BCD码来驱动数码管。采用动态显示,因此采用VHDL状态机设计,共分为八个状态,即八个数码管的位码依次选通点亮数码管。用FPGA驱动液
42、晶显示的原理是对LM3037进行控制,通过8位的总线,先对LM3037进行配置,即写入命令,然后输入要显示的内容,即写入数据,状态转换图如图3.3.5所示。3.2.3总控制模块原理图图3.3.5 液晶驱动程序状态转换图5. 键盘控制模块键盘控制电路由16个按键组成,其中数据键10个,控制键6个。键盘控制程序的设计将各按键设置为特定的功能,使用起来十分方便。可以通过键盘设置日期、时间、商品代号、单价等不同信息。3.2.3 程序设计顶层映射原理 系统的程序设计是基于VHDL的模块化设计,通过ISE工程编辑器(Project navigator)产生原理图模块(Create Schematic Sy
43、mbol)或自动产生顶层映射的原理图(View RTL Schematic),如图3.3.6所示3.3 程序清单及仿真 程序清单(见附录)。设计输入利用VHDL语言完成后,接下来是对程序进行功能仿真(Function Simulation)其仿真的目的是检查程序是否有错,是否达到预定的目标。之后是时序仿真(Timing Simulation),其目的是通过时序可以更清楚的了解程序的工作过程,在较复杂的系统中时序仿真是必不可少的。各模块的时序仿真图见附录。图3.3.6 电子称程序设计顶层映射原理图第四章 系统测试在系统硬件和软件都安装调试好后,便可以进行软件和硬件的综合测试,并对测试的误差进行分
44、析。4.1测试仪器清单测试使用的仪器设备如表4.1.1所示。表4.1.1测试使用的仪器设备序号名称型号数量备注13位半数字万用表UNI-T 1深圳胜利公司 2直流稳压电源DF1731SC2A 1江苏扬中电子仪器厂 3信号发生器GFG-8216A1南京无线电仪器厂 4双踪示波器YB43651江苏扬中电子仪器厂5FPGA实验仪DP-FPGA 1广州致远电子有限公司4.2测试方法在系统硬件焊接完成及软件功能仿真、下载成功之后。接下来对整个系统进行调试,其方法如下:将传感器放平,接好电路,使用直流稳压电源(DF1731SC2A)为FPGA及其他电路提供+5V电压,为传感器提供12V电压,不放任砝码时看
45、重量显示是否为零,不为零则调整电位器,改变放大器的放大倍数,使重量值为零,加上不同的砝码,记下显示的重量Mx(Kg)。最后进行系统误差计算。在测试过程中根据出现的问题改进电路以及程序。反复进行直到成功。0002 西瓜 00.65元2005年8月2日 10:25LCD显示重量(Kg)金额(元)LED显示图4.2.1 系统测试结果显示4.3测试结果和误差分析 4.3.1测试结果根据上节的测试方法,设M为砝码的质量,Mx为电子称显示的重量,测试后得到表4.3.1的测试结果.表4.3.1 测量结果数据表序号砝码质量/M(g)显示质量/Mx(g)误差(g)相对误差%15049.90.10.2%2 100 100.00 03 150 150.0