论文部分内容阅读
本课题在课题组之前的项目基础之上,主要研究小型PLC的FPGA内部控制模块,逻辑运算模块指令执行的过程与堆栈操作编程的方法,优化了定时器电路结构和指令的编码格式。设计以ARM+FPGA系统作为研制的新型的PLC的主机,充分利用FPGA高速并行处理的优势,两侧通过双口RAM对数据进行交换处理。进而完成对PLC指令的逻辑运算、定时和计数等功能。并且在指令结束后,向ARM侧发送指令运行结果数据。主要取得如下成果:(1)对双口RAM的各个存储空间的读写特点进行了分析,提出了避免出现读写冲突的解决的方法和设计原则;根据FPGA模块的基本组成结构,设计了FPGA模块的处理工作流程,对FPGA内部控制模块进行了设计,同时设计了FPGA和ARM之间的接口电路,实现了ARM侧与FPGA侧的通信。另外本研究对FPGA与ARM之间的双口RAM的存储区域进行了规划和地址的划分。对两侧传输的指令进行了一定的修改,优化了FPGA对各个功能模块控制的时序。(2)针对FPGA逻辑运算模块,划分梯形图程序模块,提出堆栈操作的基本原则,对于逻辑运算模块执行指令的堆栈操作和执行过程进行了规范,进而完善了设计的方案,确定指令执行的过程与堆栈操作编程的方法,对时序进行规划和设计。重新设计和修改了部分的指令格式,完成IP核的封装与逻辑运算模块的调试。(3)对于定时器模块,提出其设计思路,设计定时器模块内部总线,1ms、10m和100ms定时器的三个模块通过总线与定时器输入输出控制端口模块连接,提出了对定时器定时溢出处理的方法,实现了基于FPGA的PLC内部定时器的功能。并且优化了定时器指令的编码格式,完成了对定时器模块的封装。(4)完成了计数器模块的设计。分析了计数器模块的工作原理,计数信号的特点,以及计数值已达到计数值的处理方法,实现了计数器模块的功能。并且优化了计数器的指令的编码格式,完成了对计数器模块的封装。(5)针对设计完成后逻辑运算模块、定时器模块以及计数器模块进行了仿真验证。编写testbench仿真测试文件在modelsim软件观察仿真波形,最后将仿真无误的程序下载到开发板上进行板级验证,测试结果正确。