基于FPGA的嵌入式PLC微处理器设计

  • 格式:pdf
  • 大小:446.04 KB
  • 文档页数:5

第30卷第1期2009年 2月河南科技大学学报:自然科学版Journal of Henan University of Science and Technol ogy:Natural Science Vol .30No .1Feb .2009基金项目:洛阳市科技计划资助项目(050219)作者简介:谢微华(1983-),男,湖南岳阳人,硕士生;李济顺(1963-),男,河南太康人,教授,博士生导师,主要从事机械产品性能测试等研究.收稿日期:2008-07-07文章编号:1672-6871(2009)01-0033-04基于FPGA 的嵌入式PLC 微处理器设计谢微华,李济顺(河南科技大学机电工程学院,河南洛阳471003)摘要:目前利用FPG A 设计高性能的嵌入式处理器已经成为S OC 设计的重要部分,对一种基于FPG A 芯片的嵌入式P LC 处理器进行了研究和设计,并采用了基于VHDL 语言的自顶向下的模块化设计方法,顶层设计使用原理图输入。

最后用Quartus Ⅱ进行仿真,给出了主要仿真结果。

实验表明,该处理器能准确且快速的响应嵌入式P LC 的逻辑指令,且较传统的P LC 处理器更灵活,集成度更高。

关键词:FPG A;P LC;微程序控制器;模块化设计中图分类号:TP368.1文献标识码:A0 前言现场可编程门阵列(FPG A )是近几年来出现并被广泛应用的大规模集成电路器件,它的特点是直接面向用户,具有极大的灵活性和通用性使用方便,硬件测试和实现快捷,开发效率高,成本低,上市时间短,技术维护简单,工作可靠性好等[1]。

硬件描述语言(VHDL )是用来描述硬件电路的功能,信号连接关系及时序关系的高级硬件编程语言,设计者可根据VHDL 语言法则,对系统的逻辑进行行为描述,然后通过综合工具进行电路结构的综合、编译、优化,用仿真工具进行逻辑功能仿真和系统时序仿真,可在短时间内设计出高效、稳定、符合设计要求的大规模或超大规模的集成电路[2]。

该处理器采用了T OP -DOWN 的层次网络模块化设计方法,用VHDL 描述了嵌入式P LC 的CP U 的主要逻辑功能,考虑到嵌入式CP U 结构的复杂性和设计的可扩展性,在顶层设计中采用了原理图的方法,通过VHDL 对每个单元模块进行了仿真和综合,然后将综合生成的各个模块连接起来,组成了一个整体。

1 系统设计1.1 系统的功能该P LC 主要是用来与DSP 共同实现数控机床中的部分操作,它主要执行一些辅助的逻辑控制。

它的主要任务如下:(1)接收从DSP 发送过来的指令字,并将其进行译码转换成相应的命令信号,从而执行相应的操作;(2)接收操作面板上的按键信号,并响应相应的操作;(3)给DSP 发送应答信号以及状态信息;(4)将处理的结果输出到面板上以驱动相应的继电器。

1.2 系统的组成部分该系统的核心组成部分是由控制器、运算器以及I/O 端口构成,如图1所示。

控制器:控制器是由程序计数器、指令寄存器、指令译码器、时序产生器和操作控制器等组成,它是发布命令的“决策机构”。

运算器:运算器由算术逻辑单元、暂存器以及数据缓冲器等组成,它是数据的加工处理部件。

I/O 端口该P LC 的I/O 点数为10点输入和8点输出。

每个端口由输入寄存器以及相应的端口控图1 系统结构图制部分组成。

2 系统的FP GA 实现2.1 控制器控制器的形式主要有组合逻辑控制器和微程序控制器两种,与组合逻辑控制器相比较,微程序控制器具有规整性、灵活性、可维护性等一系列优点[3],在计算机的设计中使用比较普遍,本控制器的设计采用的也是微程序控制器。

微程序控制的基本思想,就是仿照通常的解题程序的方法,把操作控制信号编成所谓的“微指令”,存放到一个只读存储器里。

当机器运行时,一条又一条地读出这些微指令,从而产生全机所需要的各种操作控制信号,使相应部件执行所规定的操作[4]。

微程序控制器主要由控制存储器(C M ),微地址产生逻辑,微地址寄存器(u AR ),微指令寄存器(u I R )等组成。

(1)机器指令与微程序。

该处理器选取了P LC 指令系统中的十条基本指令如表1所示,指令采用十位二进制编码格式。

表1 指令系统助记符操作码+标志位注释LD 00001装载指令LDN 00011装载后取反O 00101或运算ON 00111取反后或运算A 01001与运算AN 01011取反后与运算NOT 01100非运算OUT 01110赋值运算E ND10000程序结束T ON 10010接通延时定时器T OF 10100断开延时定时器 第9~6位是四位指令的操作码字段;第5位是标志位,用来判断该指令有无操作数(1-有操作数,0-无操作数);第4~0位是操作数字段。

表中每条机器指令对应一段微程序,一段微程序包含若干条微指令,微程序的设计就具体地可落实到微指令的设计[5-6],微指令中的控制字段作为控制命令控制计算机的操作,控制字段给出的微命令应包含计算机操作的所有微命令,对微命令给出和表示的方法与所采用的编码方式有关,常用的微命令表示方法有直接表示法、编码表示法、和混合表示法,该设计采用的是将直接表示法和编码表示法混合使用的混合表示法。

该系统中的每条微指令为32位,其中低5位为下地址字段,直接送给微地址寄存器,第5~7位为测试字段,送到微地址产生逻辑电路里面以控制微地址的产生,其余位为用来产生各种微命令的控制字段。

(2)控制存储器。

控制存储器中存放的是各指令所对应的微程序,它可以用FPG A 中的LP M_ROM 图2 控存原理图模块来实现,如图2所示。

Cl ock 为同步时钟信号,address 为5位的地址值,q 为32位的微指令,当cl ock 上升沿到来时,r om 就把address 所对应的地址中的值输出给q 。

(3)微地址产生逻辑。

微地址产生逻辑主要是根据微指令中的测试位及其他相关的条件来控制微地址的产生,它是根据一定的逻辑功能用VHDL 语言编写的,并且经过编译和综合后生成的模块,如图3所示。

其中,clk 为同步时钟信号,rst 为复位信号,q 为输出的5位微地址值。

其控制流程如下:(1)系统启动时,给出一个rst =1的复位信号,q 端便输出“00010”,为输入扫描微程序的入口地址;(2)对应的微指令就从控存中输出,然后该微指令中的5位下地址字段直接输入到din 端,3位测试位输入到m 端;(3)如果m =“000”,则q 端输出的地址值直接加1,且返回(2)继续执行;否则,执行下・43・河南科技大学学报:自然科学版 2009年第1期谢微华等:基于FPG A 的嵌入式P LC微处理器设计图3 微地址产生逻辑电路原理图一步;(4)如果m =“001”,则看i 端输入的用户程序指令来判断是否需要取数操作,如果需要,则q 端输出各个取数微程序的入口地址;如果不需要,则q端根据i 的操作码输出相应指令的微程序入口地址,且返回(2)继续执行;否则,执行下一步;(5)如果m =“010”,q 端直接输出din 的地址值,且返回(2)继续执行;否则,执行下一步;(6)如果m =“011”,则q 端根据i 的操作码输出相应指令的微程序入口地址,且返回(2)继续执行。

2.2 运算器图4 运算器原理图运算器是用来对输入的数据进行算术和逻辑运算的部件[7],该ALU 具有三输入和两输出,d1和d2是参与逻辑运算的两个位数据,其中d1来自外部的取数,d2来自输出暂存器S,sel 是指令的操作码。

result 是运算后的结果,输出后送给了暂存器S,q 用来启动定时器,如图4所示。

2.3 RAM 图5 RAM 原理图RAM 用来存储用户程序,它可以用FPG A 中的LP M _RAM _DQ 模块来实现。

其中,wren 是读写控制端,当wren =0时为读允许,这时在同步时钟cl ock的上升到来时沿将address 所对应的地址中的内容给输出端q;当wren =1时为写允许,这时在同步时钟cl ock 的上升沿到来时将data 端的数据写入到address所指明的地址中,如图5所示。

3 仿真与分析为了测试指令的运行情况,本文在最后给出了一段基于Quartus Ⅱ的程序仿真。

仿真时给出了10位输入数据indata ="1110000101",I 0.0~I 0.4分别对应着该数据的第0位~第4位,同样Q0.0和Q0.1分别对应着输出端子的第0位和第1位。

仿真结果的图6中:T1,T2,T3,T4为4个时钟节拍信号,out0和out1分别对应着输出端子Q0.0和Q0.1,因为I 0.0和I 0.2为1,I 0.3和I 0.4都为0,因此程序运行的最后结果应该是Q0.0和Q0.1都为1,并且从图6可以看出,仿真结果与此相同,程序运行正确,说明所设计的微处理器及其指令正确可靠。

程序仿真LD I 0.0A I 0.2O I 0.3ON I 0.4OUT Q0.0LD Q0.0OUT Q0.1END图6 Q ua rtu s Ⅱ仿真结果・53・4 结束语本文所设计的P LC 微处理器具有很强的可修改性和可移植性,并且优化升级也很方便,可以根据特定的需要方便地增删指令和I/O 端口的数量,这比传统的P LC 具有更大的灵活性。

另外,由于FPG A具有很高的密度,能够集成很大的系统[8],因而极大地提高了系统的可靠性。

参考文献:[1] 周宁宁,刘 胜.基于FPG A 技术的CP U 模型机的设计与实现[J ].南京邮电学院学报,2003,23(1):77-80.[2] 吴孜越,刘陆群,吕战争.基于PC NC 系统的嵌入式P LC 组件的设计与实现[J ].河南科技大学学报:自然科学版,2005,26(3):18-21.[3] 李济顺,姜存学,梁春安,等.用V isual C ++实现的嵌入式P LC 梯形图编辑软件[J ].河南科技大学学报:自然科学版,2006,27(5):50-54.[4] 郭金怀,刘丹非,王 诚.嵌入式CP U 的仿真与设计[J ].现代电子技术,2003,16(5):59-62.[5] 周 荣.基于FPG A 的嵌入式CP U 的VHDL 建模和设计[J ].浙江工业大学学报,2006,34(5):550-553.[6] 韦忠善,朱海燕.基于FPG A 的精简指令CP U 的实现[J ].广西梧州师范高等专科学校学报,2005,21(1):90-94.[7] 齐文钊,刘开华.基于FPG A 的H.263编码器设计[J ].河南科技大学学报:自然科学版,2004,25(6):50-53.[8] 张万忠.可编程控制器入门与应用实例[M ].北京:中国电力出版社,2005.(上接第24页)短程序代码的长度,在程序调试结束以后,还应该关闭程序调试过程中用到的一些功能项,例如CP U 负荷察看功能、实时数据交换功能、实时分析功能等[8]。