1、资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。天津职业技术师范大学Tianjin University of Technology and Education毕 业 设 计专 业: 应用电子技术教育班级学号: 0711-26 学生姓名: 肖 艳 指导教师: 于万霞 副教授 二0一二 年 六 月天津职业技术师范大学本科生毕业设计基于FPGA的豆浆机控制电路的设计The Design of Soybean Milk Machine Controlling Circuit Based on FPGA 专业班级: 应教0711 学生姓名: 肖 艳指导教师: 于万霞 副教授系 别: 电子
2、工程学院 06月摘 要本文针对现代智能家居的实际需求, 设计了一种基于现场可编程门阵列( FPGA) 的豆浆机控制系统。采用FPGA设计, 设计者只需用HDL语言完成系统功能的描述, 借助EDA工具就可得到设计结果, 将编译后的代码下载到目标芯片就可在硬件上实现。该系统能实现豆浆制作功能, 果汁制作功能和自动清洗功能。系统由上位机和下位机两部分组成。上位机采用VB程序设计操作界面。下位机采用Quartus软件设计, 使用硬件描述语言编程, 由EP1C3144C8N芯片执行豆浆机相关操作。两者之间的通信采用异步通信方式。 文章详细介绍了RS-232的三线制通信原理, VB中MSComm控件的使用
3、, 上位机操作界面, 下位机原理及使用和液晶模块的原理及使用。设计的系统运行稳定, 性能优良, 在现代智能家居中, 具有很好的应用前景。关键词: MSComm控件; 豆浆机; 硬件描述语言; 液晶显示器1602ABSTRACTIn this paper, to meet the actual needs of the modern smart home, a field programmable gate array (FPGA) based soymilk control system is designed. The system can achieve the function of s
4、oybean milk production, juice production function and automatic cleaning function. The system consists of two parts of the upper and lower machine. The upper part uses VB programming user interface, the lower part uses the Quartus II software design, a hardware description language programming, and
5、execution Soymilk EP1C3144C8N chip operation. The asynchronous communication mode is adopted between the upper and lower machine.The article gives detail RS-232 three-wire communication theory and VB MSComm, the user interface of host computer, the introduction about machine principle and the use of
6、 LCD modules. The system is running stable, excellent performance, with good prospect of application in the modern intellectual home.Key Words: MSComm; Soy-bean Milk Machine; VHDL; LCD1602目 录 1 引言11.1 研究背景11.2 市场现状11.3 发展前景22 豆浆机控制电路选择32.1豆浆机的基本结构32.1.1豆浆机结构32.1.2豆浆机结构32.2 豆浆机控制电路的论证42.2.1方案一: 基于单片机
7、的豆浆机控制电路设计42.2.2 方案二: 基于FPGA的豆浆机控制电路设计52.2.3 方案比较与选择63 豆浆机性能指标73.1 豆浆机工作原理73.2 设计要求73.3 实现方案74 豆浆机控制电路硬件设计84.1 硬件总体方案设计84.2 FPGA核心模块84.2.1 FPGA芯片84.2.2 电源84.2.3 时钟源104.2.4 复位电路104.2.5 配置电路104.2.6 下载接口电路114.3 拨码开关模块124.4 电机模块电路124.5 RS232串行接口电路134.6 液晶1602显示电路145 豆浆机控制电路软件设计155.1 VHDL语言概述155.2 下位机顶层原
8、理图165.3 系统各功能模块的实现185.3.1 发送模块的实现185.3.2 接收模块的实现185.3.3 电机控制模块的实现195.3.4 控制模块的实现195.3.5 液晶显示模块的实现205.4 上位机软件的实现205.4.1 PC与FPGA串行通信编程语言的选择215.4.2 MSComm控件介绍215.4.3串口编程的实现246 联机调试276.1 调试数据276.2 数据总结326.3 下一步工作32结 论33参考文献34致 谢35附录1: 整体电路图36附录2: 源程序381 引言1.1 研究背景豆浆具有极高的营养价值, 是一种非常理想的健康食品。据专家介绍, 在豆浆里含有多
9、种优质蛋白、 多种维生素、 多种人体必须的氨基酸和多种微量元素等。无论成年人、 老年人和儿童, 只要坚持饮用, 对于提高体质、 预防和治疗病症, 都大有益处。春秋饮豆浆, 滋阴润燥, 调和阴阳; 夏饮豆浆, 消热防暑, 生津解渴; 冬饮豆浆, 祛寒暖胃, 滋养进补。豆浆是一种老幼皆宜、 价廉质优的液态营养品, 它所含的铁元素是牛奶的6倍, 所含的蛋白质虽不如牛奶高, 但在人体内的吸收率可达到85%, 因此有人称豆浆为”植物牛奶”。 豆浆被誉为女人最完美的食物, 是因为豆浆中含有丰富的营养成分, 其中异黄酮能够调节女性内分泌系统的平衡, 保持女性肌肤美白, 异黄酮还可发挥与雌激素相同的保健作用,
10、 如缓解更年期综合症、 提高骨密度、 预防骨质疏松等, 而且它还能避免雌激素带来的副作用, 如乳腺癌、 子宫癌等。豆浆中富含人体所需优质植物蛋白, 八种必须的氨基酸, 多种维生素及钙、 铁、 磷、 锌、 硒等微量元素, 不含胆固醇, 而且含有大豆皂甙等至少五六种可有效降低人体胆固醇的物质, 鲜豆浆的大豆营养易于消化吸收, 经常饮用, 对高血压、 冠心病, 糖尿病、 骨质疏松等大有益处, 还具有平补肝肾、 防老抗癌、 降脂降糖、 增强免疫的功效。但随着人们健康认识的增强, 为了卫生, 防止上了”黑心作坊”的当, 喝的放心, 纷纷选择家庭自制豆浆, 从而拉动家用微电脑全自动豆浆机市场活跃。1.2
11、市场现状近年来, 家用豆浆机市场需求已经呈现加速增长的势头。国内豆浆机市场 至 的销售量分别为250万台、 300万台、 500万台, 今年的销量则有望猛增到1000万台。专家预计, 未来几年豆浆机市场将非常乐观。中国电子商会副秘书长陆刃波对记者表示, 相比其它产品, 小家电的利润算高的, 超过了30%, 因此现在许多企业都加大了对小家电的投入, 如飞利浦、 TCL、 美的等。另外, 这个市场的发展速度也非常快, 包括豆浆机在内的整个小家电市场在未来几年将迎来巨大的发展空间。 豆浆机广阔的前景自然也引来了众多家电企业的觊觎, 市场上豆浆机品牌不胜枚举, 可是长期以来都是一家独大的局面, 九阳凭
12、借先行者的优势和雄厚的实力占据着九成左右的市场, 具有绝对垄断地位。直到最近, 情况才似乎有所改观, 美的宣布将强势进入豆浆机市场。美的表示, 美的斥资3亿元在广东顺德建设的料理电器工业园即将正式启用, 工业园共有豆浆机生产线4条, 年产能达到3000万台。甄少强表示: ”豆浆机行业近两年呈现高速发展态势, 市场前景十分广阔, 当前行业高度垄断的格局也亟待打破, 这就是我们大举进入豆浆机行业的主要原因。”据悉, 美的在豆浆机行业的目标是今年占有10%的市场份额; 销售额突破20亿元, 市场份额达到35%。格兰仕也表示, 小家电将成为格兰仕继微波炉、 空调之后的第三大支柱产业, 今年的销售目标是
13、40亿元, 占整个格兰仕集团400亿元销售目标的10%。 美的大举进入豆浆机行业, 将对当前占有 市场份额的九阳形成较大压力。可是业内专家也指出, 作为新进入者, 美的短时间内还无法对九阳构成实质性挑战, 可是依托生产优势以及品牌、 渠道方面的实力, 两三年后, 二者的竞争可能会见分晓。当前, 九阳在豆浆机行业的地位似乎还无法撼动, 因为九阳是国内豆浆机消费的缔造者, 在豆浆机行业有着强大的品牌号召力, 专业化和技术优势也有助于其保持豆浆机市场的龙头地位。1.3 发展前景豆浆是一种老幼皆宜、 价廉质优的营养品, 中国医学旱就肯定了豆浆的保健作用。传统的豆浆制作方法, 要先磨浆, 然后再过滤豆渣
14、, 豆浆熬煮也要自己动手, 还要特别注意豆浆溢锅的问题, 程序繁琐麻烦。而且, 随着人们对健康认识的增强, 越来越多的人对豆浆的卫生状况比较关注, 人们开始青睐小型家用豆浆机, 豆浆的制作过程在没有人操作的情况下自动完成。市场上的豆浆机的控制电路大部分是由单片机来控制完成的, 然后单片机外围电路较多而时序实现能力较弱, 调试复杂, 抗干扰能力差, 特别对这种豆浆机需要长时间不间断运作的系统, 由于主要是软件运作, 容易出错, 造成系统不稳定。采用FPGA设计, 设计者只需用HDL语言完成系统功能的描述, 借助EDA工具就可得到设计结果, 将编译后的代码下载到目标芯片就可在硬件上实现。EDA技术
15、作为一种现代电子系统开发方式, 具有修改软件程序即可改变硬件和速度快, 可靠性高的特点, 而且成本低、 功能强的特点。故本设计采用FPGA来完成豆浆机工作控制, 使用液晶显示, 由电脑远距离操作, 完成检测水位、 加热、 碎豆实现了做豆浆的功能。它的强大功能, 必定在未来的豆浆机市场中占取相当大的份额。2 豆浆机控制电路选择2.1豆浆机的基本结构2.1.1豆浆机结构如图2-1所示。图2-1 智能豆浆机的结构图2.1.2豆浆机结构豆浆机, 采用微电脑控制, 实现预热、 打浆、 煮浆和延时熬煮过程全自动化, 特别是由于增设了”文火熬煮”处理程序, 使豆浆营养更加丰富, 口感更加香泽。 (1) 杯体
16、: 杯体像一个硕大的茶杯, 有把手和流口, 主要用于盛水或豆浆。杯体有的用塑料制作, 有的用不锈钢制作, 但都是符合食品卫生标准的不锈钢或聚碳酸脂材质。购机时以选择不锈钢杯体为宜, 主要是便于清洁。在杯体上标有”上水位”线和”下水位”线, 以此规范对杯体的加水量。杯体的上口沿恰好套住机头下盖, 对机头起固定和支撑作用。 (2) 机头: 机头是豆浆机的总成, 除杯体外, 其余各部件都固定在机头上。机头外壳分上盖和下盖。上盖有提手、 工作指示灯和电源插座。下盖用于安装各主要部件, 在下盖上部( 也即机头内部) 安装有电脑板、 变压器和打浆电机。伸出下盖的下部有电热器、 刀片、 网罩、 防溢电极、
17、温度传感器以及防干烧电极。需要说明, 下盖的材质同样需要符合食品卫生标准。 (3) 电热器: 加热功率800W, 不锈钢材质, 用于加热豆浆。加热管下半部应设计为小半圆形, 易于洗刷和装卸网罩。 (4) 防溢电极: 用于检测豆浆沸腾, 防止豆浆益出。它的外径5mm, 有效长度15 mm, 处在杯体上方。为保障防溢电极正常工作, 必须及时对其清洗干净, 同时豆浆不宜太稀, 否则, 防溢电极将失去防护作用, 造成溢杯。 (5) 温度传感器: 用于检测”预热”时杯体内的水温, 当水温达到MCU( SH66P20A) 设定温度( 一般要求80 左右) 时, 启动电机开始打浆。 (6) 防干烧电极: 该
18、电极并非独立部件, 而是利用温度传感器的不锈钢外壳。外壳外径6mm, 有效长度89mm, 长度比防溢电极长很多, 插入杯体底部。杯体水位正常时, 防干烧电极下端是应当被浸泡在水中。当杯体中水位偏低或无水, 或机头被提起, 并使防干烧电极下端离开水面时, MCU(微控制器)经过防干烧电极检测到这种状态后, 为保安全, 将禁止豆浆机工作。 (7) 刀片: 外形酷似船舶螺旋桨, 高硬度不锈钢材质, 用于粉碎豆粒。 (8) 网罩: 用于盛豆子, 过虑豆浆。实际工作时, 网罩经过扣合斜楞而与机头下盖是扣合在一起的。清洗时会发现, 因受热后网罩与机头下盖扣合出现过紧, 因此拆卸网罩时应先用凉水将其冷却,
19、以免用力过大而划伤手或弄坏网罩。特别是清洗网罩比较费事, 往往让用户感到太辛苦, 这一问题引起各厂家重视。九阳公司经过技术创新, 对网罩改进实现了重大突破, 应用九阳专利导流技术的拉法尔网, 匹配”X型旋风刀片”, 经上万次全循环精细磨浆, 不但大大地提高了豆浆营养质量, 同时使网罩的清洗变得简便而轻松。2.2 豆浆机控制电路的论证2.2.1方案一: 基于单片机的豆浆机控制电路设计采用单片机作为主控芯片, 经过单片机的某些引脚连接外部电路。经过 MCU有关脚控制, 相应三极管驱动, 再由多个继电器组成的继电器组实施电路转换来完成。单片机控制系统框图如图2-2所示。图2-2单片机系统控制框图2.
20、2.2 方案二: 基于FPGA的豆浆机控制电路设计采用FPGA作为主控芯片, 经过FPGA的某些引脚连接外部电路。经过FPGA有关脚控制, 相应三极管驱动, 再由多个继电器组成的继电器组实施电路转换来完成。FPGA控制系统框图如图2-3所示。图2-3 FPGA控制系统框图本设计将经过上位机控制来执行按键操作, 为了系统简化温度传感器用加热时间来代替, 防干烧传感器和防溢出传感器采用拨码开关替代。相关操作经过上位机指示灯和下位机液晶1602来显示。2.2.3 方案比较与选择采用单片机设计具有成本低、 易于控制的优点。设计是: 经过软件编程, 仿真, 调试, 符合要求后将程序用编程器写入到单片机芯
21、片上。利用单片机的中断响应等待的请求, 进行相应的处理。利用单片机采集来的数据, 来控制豆浆机的工作状态。但这种设计外围电路较多而时序实现能力较弱, 调试复杂, 抗干扰能力差, 特别对这种豆浆机的强电控制, 由于主要是软件运作, 容易出错, 造成系统不稳定。采用FPGA设计, 设计者只需用HDL语言完成系统功能的描述, 借助EDA工具就可得到设计结果, 将编译后的代码下载到目标芯片就可在硬件上实现。采用PLD设计, 将所有器件集成在一块芯片上, 体积大大减小的同时还提高了稳定性, 而且可应用EDA软件仿真, 调试, 易于进行功能扩展, 外围电路较少, 采用硬件逻辑电路实现, 其最大的优点是稳定
22、性好, 抗干扰能力强, 非常适合作为豆浆机的系统的控制核心。基于对以上各个因素的考虑, 决定采用以FPGA为核心, 用 VHDL编程来实现豆浆机的设计方法, 实现豆浆机控制电路的设计, 提升设计的可行性。综上所述, 本设计是基于FPGA的豆浆机控制电路的设计。3 豆浆机性能指标3.1 豆浆机工作原理豆浆机由上位机控制下位操作, 由下位执行上位机控制信号。上位机给下位机控制数据; 下位机给上位机传送水位高、 水位低、 添加水、 添加豆子、 添加水果信号, 上位机不同的操作在下位执行时, 电机驱动能力也不同, 液晶显示内容也不同。系统执行过程是不具有可逆性的。3.2 设计要求(1) 实时显示时间。
23、(2) 误操作实时报警提示。(3) 液晶显示豆浆机状态。(4) 具有磨豆浆, 榨取果汁及清洗功能。(5) 具有加热和研磨操作。(6) 具有远距离操作功能。3.3 实现方案(1) 实时显示: 利用上位机软件显示当前时间及操作剩余时间。(2) 误操作实时报警提示: 利用上位机提示高水位, 低水位及其它误操作报警提示, 当操作改正时, 报警消失。(3) 液晶显示豆浆机状态: 经过下位机控制液晶实时显示系统当前操作。(4) 具有磨豆浆, 榨取果汁及清洗功能: 经过上位机控制, 由下位机执行控制电机操作, 不同的选择使得电机速度也不同。(5) 具有加热和研磨操作: 由上位机控制, 在上位机和下位机同时显
24、示。(6) 具有远距离操作功能: 上位机和下位机经过异步通信方式传输数据, 采用RS-232三线通信原理进行通信, 端口号设为串口4, 波特率为4800bps, 10位数据帧传输。 4 豆浆机控制电路硬件设计4.1 硬件总体方案设计本系统采用FPGA EP1C3T144C8N 核心板作为中央处理器, 采用I/O口控制LCD1602显示, 实现豆浆机研磨功能, 果汁操作功能。本系统主要由FPGA核心模块、 按键模块、 液晶显示模块、 传感器模块以及电机驱动模块五部分组成, 具体系统框图如图4-1所示。图4-1电路系统框图4.2 FPGA核心模块FPGA核心模块是整个系统的核心, 它担负着整个系统
25、的时序控制、 数据采集和处理的任务。本系统的FPGA核心模块主要由FPGA芯片、 电源、 时钟源、 FPGA配置电路、 下载接口电路组成。4.2.1 FPGA芯片FPGA芯片采用Altera公司的Cyclone系列的EP1C3T144C8N, 其I/O电压为3.3V, 内核电压为1.5V, 一个锁相环, 约3万门、 6万RAM bit, 144个引脚。FPGA的I/O引脚按其功能能够分为四部分, 且每个BANK的I/O引脚供电是独立的, BANK1BANK4引脚图如图4-2所示。4.2.2 电源如图4-3所示,本核心板的所有I/O脚都采用3.3V电压标准, 因此所有的VCCIO都连接 3.3V
26、, VCCINT为FPGA内核工作电压输入, Cyclone 系列的FPGA均采用 1.5V的内核电压, 因此这里连接1.5V。. 图4-1 系统框图a) b) c) d) 图4-2 EP1C3T144 BANK1BANK4引脚图4-3 I/O电压、 内核电压连接图4.2.3 时钟源无论是用离散逻辑、 可编程逻辑, 还是基于其它类型器件的任何数字设计, 系统的成功运行都要依靠可靠的时钟。一些对实时性和同步性要求较高的系统, 如数据采集系统, 甚至不能使用任何可能含有毛刺的输出作为时钟信号。在CPLD/FPGA设计中最好的时钟方案是: 由专用的全局时钟输入引脚驱动的单个主时钟去钟控设计项目中的每
27、一个触发器。CPLD/FPGA都具有专门的全局时钟引脚, 它直接连到器件中的每一个寄存器。这种全局时钟提供器件中最短的时钟到输出的延时。在本系统中FPGA EP1C3T144C8N 提供4路时钟供用户使用, 板载50M有源晶振, 能够根据需要进行PLL 定制, 或者直接分频处理。本系统时钟接线如图4-4所示。图4-4 系统时钟接线图4.2.4 复位电路复位按键, 能够从新配置FPGA, 按下之后, 从配置芯片中读取程序; 成功读取之后, 程序开始正常运行。系统复位电路的原理图如图4-5所示。4.2.5 配置电路由于FPGA芯片一般都是基于SRAM工艺的, 不具备非易失特性, 因此每次断电后都会
28、丢失内部的逻辑配置, 因此系统在每次上电后都必须从外部非易失性存储器中加载既定的配置信息。本系统采用EPCS1作为FPGA的配置芯片, 用于储存系统的内部逻辑配置。EPCS1是属于Altera的串行配置器件系列的芯片, 是可编程逻辑工业领域中最低成本的配置器件。EPCS1拥有包括在系统可编程( ISP) 、 flash存储器访问接口、 节省单板空间的小外形集成电路( SOIC) 封装等高级特征, 成为Cyclone FPGA系列产品在大容量及价格敏感的应用环境下的完美补充。系统FPGA配置电路的原理图如4-6所示。图4-5 系统复位电路图图4-6 系统FPGA配置电路图4.2.6 下载接口电路
29、这是一种主串模式下FPGA的配置电路, 经过AS接口来完成EPCS 芯片的编程下载, 使用的下载电缆是ByteBlasterII。AS接口主要是用来编程EPCS1芯片, 同时也能够用来调试系统。具体过程是首先编程EPCS1, 然后经过EPCS1 配置FPGA, 运行程序。需要考虑的是EPCS1的编程次数是有限制的, 虽然比EPC 系列芯片的要多, 可是太频繁的擦除和写入对芯片还是有一定影响的。最好是在调试结束后, 才使用AS接口将逻辑配置下载到EPCS1中, 完成程序的固化。AS 接口电路原理图如4-7所示。图4-7 下载接口电路4.3 拨码开关模块根据设计要求, 按键功能分别为豆子(SW01
30、), 水果(SW02), 水(SW03), 低水位(SW04), 高水位( SW05) , 预留( SW06SW08) 。如图4-8所示图4-8 拨码开关电路4.4 电机模块电路电机模块电路如图4-9所示。本电路中的电机能够采用直流电机和步进电机, 在综合考虑了工作情境, 系统精度和价格等因素, 本设计所采用额定电压5V, 额定功率为8W的单向直流电机。电机的工作状按以下几种情形来分析。情形一: 当MOTO_A=1, MOTO_B=0时, Q1导通, 导致Q2导通, Q6导通后电流形成回路, 同时Q5截止, Q3截止, Q4截止, 而电流从A流向B, 电机正转。情形二: 当MOTO_A=0,
31、MOTO_B=1时, Q4导通, 导致Q3导通, Q5导通后电流形成回路, 同时Q2截止, Q1截止, Q6截止, 而电流从B流向A, 电机反转, 因为本电路电机为单向, 故效果为不动。情形三: 当MOTO_A=1, MOTO_B=1时, 由于对称的三极管型号相同, 参数相同, 导致A、 B两点电位相同, 电机不动。经过以上分析可知, 经过调节脉冲占空比能够调节电机的转动速度。电机模块的作用是模拟出租车的运行状况, 包括加速, 开启和停止功能。图4-9 电机模块电路4.5 RS232串行接口电路串行通信功能是当前下位机应用中经常要用到的功能, 包括RS232串口和RS485串口。本设计采用RS
32、232作为上位机和下位机通信端口。电路中, MAX232的12脚( RXD_232) 、 11脚( TXD_232) 和FPGA的PIN_53和PIN_56 相连。RS232串行接口电路图如图4-10所示。图4-10 RS232串行接口电路4.6 液晶1602显示电路液晶显示器由于体积小、 质量轻、 功耗低等优点, 日渐成为各种便携电子产品的理想显示器。本系统采用1602字符型液晶显示。液晶接口电路由电源5V提供。电路如图4-11所示。图4-11 液晶1602显示电路5 豆浆机控制电路软件设计豆浆机控制电路的软件部分由下位机FPGA的VHDL程序设计和上位机的VB程序设计组成。上位机和下位机的
33、通信方式采用异步通信方式, 波特率为4800bps, 10位帧格式传输。其中下位机模块包括发送模块, 接收模块, 控制模块, 电机控制模块和液晶模块组成。5.1 VHDL语言概述VHDL是由美国国防部为描述电子电路所开发的一种语言, 其全称为(Very High Speed Integrated Circuit) Hardware Description Language。与另外一门硬件描述语言Verilog HDL相比, VHDL更善于描述高层的一些设计, 包括系统级( 算法、 数据通路、 控制) 和行为级( 寄存器传输级) 。1、 VHDL语言的优点VHDL是一种用形式化方法来描述数字电路
34、和设计数字逻辑系统的语言, 综合起来讲, VHDL语言具有如下优点。( 1) 覆盖面广, 描述能力强, 是一个多层次的描述语言。在VHDL语言中, 设计的原始描述能够非常简练, 经过层层加强后, 最终可成为直接付诸生产的电路或版图参数描述。( 2) 具有良好的可读性, 即容易被计算机接受, 也容易被读者理解。( 3) 使用期长, 不会因工艺变化而使描述过时。( 4) 支持大规模设计的分解和已有设计的再利用。一个大规模的设计不可能由一个人独立完成, 必须由多人共同承担, VHDL为设计的分解和设计的再利用提供了有力的支持。2、 VHDL程序的基本结构一个完整的VHDL语言程序包括库的调用、 程序
35、包的调用、 实体说明、 结构体描述和配置4部分。( 1) 库和库中程序包的调用类似于高级程序语言的文件头, 程序中的函数及一些数据类型如std_logic等都在库中的程序包中有定义, 因此程序要用到这些函数及数据类型则必须调用库和库的程序包。( 2) 实体( Entity) 是VHDL程序的基本单元, 用于说明设计系统的外部接口信息, 相当于提供一个设计单元的公共信息。对于一个已经确定的系统, 实体的描述是唯一的。( 3) 结构体( Architecture) 用于描述相应实体的行为、 功能或电路结构, 特别要注意的是结构体与实体不是一一对应的的, 一个实体能够对应多个结构体, 但一个结构体只
36、能对应一个实体。( 4) 配置语句一般用来描述层与层之间的连接关系以及实体与结构之间的连接关系。在分层次的设计中, 配置能够用来把特定的设计实体关联到元件实例( Component) , 或把特定的结构关联到一个实体。当一个实体存在多个结构时, 能够经过配置语句为其指定一个结构, 若省略配置语句, 则VHDL编译器将自动为实体选一个最新编译的结构。5.2 下位机顶层原理图系统顶层原理图如图5-1所示。发送模块1秒钟向PC机发送500次10位数据帧, 该脉冲由液晶显示模块clk_500与控制发送模块中的key(2)连。采用的波特率为4800bps, 与上位机调试时, 采用串口4, 若连接的不是该
37、串口, 则设置该端口为串口4即可, 同时选择波特率为4800通讯模式。接收端模块接收PC机发来的10位串行数据, 将之有效8位数据送至液晶显示端, 完成数据的接收过程。该模块是采用4800bps*16波特率进行采样, 使每次采集的数据均在信号脉冲中间, 连续采得3次相异或即可得知PC机给下位机发送数据, 从而能顺利完成数据的接收任务。控制模块将拨码开关的值输送给发送端, 以便于发送给PC端。其中发送频率为500hz, 它的来源自显示模块输出信号端clk_500。液晶显示是将接收模块收到的8位有效数据显示出来, 以便反应豆浆机的工作状态。电机模块是将接收模块收到的8位数据进行选择, 以控制直流电
38、机的工作状态。用来模拟豆浆机的研磨过程。该原理图中输入部分分别是系统时钟信号clock_50M, 拨码开关数key_data7.0, 按键开关key1.0(用于测试), 复位信号reset。输出部分是由液晶读写信号lcd_wr, 液晶串行信号: lcd_rs, 液晶使能信号: lcd_en, 液晶数据信号data7.0, 直流电机控制端: motoa, motob, RS232发送端TXD, TI(用于测试), 发送的波特率TxdClkOut(用于测试)等组成。图5-1 系统顶层原理图5.3 系统各功能模块的实现5.3.1 发送模块的实现send 模块输入时钟端clock_50M, 待发送的数
39、据端(8位)Datain7.0, 发送使能端WR, 输出端为波特率输出clkout, 串行输出端TXD端, 发送状态标志位TI端。其内部波特率为4800bps, 8位数据被打包成10位数据用于异步传输。发送模块图如图5-2所示。 图5-2 发送模块图5.3.2 接收模块的实现rec_1 模块如图5-3所示。输入信号为系统时钟信号clk_50M, 数据接收端rx, 由PC机发送给接收模块的10位数据串行输入端。输出信号为接收状态标志位sig1, 以供查询。接收数据输出端Q7.0。其内部工作的波特率4800bps, 10位数据帧接收模式。在接收时, 采用4800bps*16的标准, 对接收到的数据
40、进行采样, 以保证数据的正确性。 图5-3 接收模块图5.3.3 电机控制模块的实现key_set 模块如图5-4所示。输入系统时钟clock_50M, 数据端data7.0, 直流电机控制端motoa, motob。经过不同数据, 选择直流电机的工作状态。当数据data7.0值为fr_value时, 电机转速为速度1, 当数据data7.0值为do_value时, 电机转速为速度2, 当数据data7.0值为cl_value, 电机转速为速度3, 当数据值为其它值是, 电机不动。图5-4 电机控制模块图5.3.4 控制模块的实现uart_test 模块如图5-5所示。输入系统时钟信号为 CL
41、K_500HZ, 按键控制信号key2.0, 其中只有key2在此设计中有作用, 用于发送使能信号, sdata7.0为待发送的数据端, wen为发送状态标志位。图5-5 控制模块图5.3.5 液晶显示模块的实现ram_1602 模块如图5-6所示。从上位机接的的八位数据rdata7.0, 系统时钟输入信号为clk_50M, 液晶显示复位信号reset, 输出液晶控制信号lcd_e, lcd_rs, lcd_rw及液晶显示数据端data7.0。另外还有500hz脉冲信号clk_500, 用于发送端key2相连, 使得每1秒钟向PC机发送500次10位数据帧。 图5-6 液晶显示模块图5.4 上
42、位机软件的实现PC功能强大, 人机界面友好, 是FPGA所不能及的; 由PC和FPGA构成的能够实现更加复杂的控制。这样, 就会遇到了PC与FPGA串行通信的问题。在硬件上, PC和FPGA都有串口。因此, 能够使用RS232或RS485标准接口进行通信; 在软件上, 需要分别为PC和FPGA编写相应的程序。PC端的程序采用Visual Basic 6.0(简称VB 6.0)、 Visual C+ 6.0(简称VC+6.0)、 Dephi等软件进行开发。其中, VB易学易用, 使用广泛。串口数据通信协议是: 数据传输速率为4800bps, 1位开始位, 8位数据位, 1位停止位, 无奇偶校验位
43、。下位机向上位机每秒发送500帧数据, 每帧数据由1个字节组成。5.4.1 PC与FPGA串行通信编程语言的选择Visual Basic, 简称VB, 是Microsoft公司推出的一种Windows应用程序开发工具。是当今使用最广泛的编程语言之一, 它也被公认为是编程效率最高的一种编程方法。无论是开发功能强大、 性能可靠的商务软件, 还是编写能处理实际问题的实用小程序, VB都是最快速、 最简便的方法。当前, VB编程已经成为Windows系统开发的主要语言之一, 以其高效、 简单易学及功能强大的特点越来越为广大程序设计人员及用户的喜爱。VB支持面对象的程序设计, 具有结构化的事件驱动编程模
44、式能够使用, 而且能够十分简便地做出良好的人机界面。在标准串中通信方面, VB提供了串行通信控件MSComm, 为编写PC串口通信软件提供了极大的方便。5.4.2 MSComm控件介绍1、 MSComm控件的通信方法MSComm是Microsoft公司提供的Windows下串行通信编程Active X控件, 它为应用程序提供了经过串口收发数据的简便方法。使用MSComm控件非常方便, 仅需要经过简单的修改控件的属性和使用控件的通信方法, 就能够实现对串口的配置, 完成串口接收和发送数据等任务。MSComm控件提供两种处理通信问题的方法: 事件驱动法和查询法。(1) 查询法这种方法是在每个重要的
45、程序之后, 查询MSComm控件的某些属性值(如CommEvent 属性和InBufferCount属性), 来检测事件和通信状态。如果应用程序较小, 而且是自保持的, 这种方法可能是更可取的。例如, 如果写一个简单的电话拨号程序, 则没有必要对每接收一个字符都产生事件, 因为唯一等待接收的字符是调制解调器的”确定”响应。(2) 事件驱动法这是处理串口通信的一种有效方法。当串口接收或发送指定数量的数据, 或当串口通信状态发生改变时, MSComm控件触发OnComm事件。在OnComm事件中, 可经过检测CommEvent属性值获知串口的各种状态, 从而进行相应的处理。这种方法程序响应及时,
46、可靠性高。2、 MSComm控件的引用MSComm控件没有出现在VB的工具箱里面, 因此在使用MSComm控件时, 需要将其添加到工具箱中, 步骤如下。(1) 依次选择VB菜单的工程/部件选项, 如图5-7所示。( 2) 选择部件后, 弹出部件对话框, 勾选Microsoft Comm Control 6.0控件, 如图5-8 所示。( 3) 单击”应用”或”确定”按钮后, 在工具箱中可看到MSComm控件, 双击该图标, 即可将MSComm控件添加到窗口中, 如图5-9 所示。( 4) 单击窗口中的MSComm控件, 在VB界面的右侧会显示出MSComm控件的属性窗口, 如图5-10 所示, 在属性窗口中, 能够以