《EDA技术及应用第5章-EDA技术工程应用实例--EDA技术与应用课件.ppt》由会员分享,可在线阅读,更多相关《EDA技术及应用第5章-EDA技术工程应用实例--EDA技术与应用课件.ppt(51页珍藏版)》请在三一办公上搜索。
1、第5章 EDA技术工程应用实例,5.1 SOPC设计5.2 基于FPGA的PID算法实现,第5章 EDA技术工程应用实例5.1 SOPC设计,5.1 SOPC设计5.1.1 概述,作为PLD和ASIC相结合的产物SOPC(System on Programmable Chip,片上可编程系统),可以在单片PLD器件上实现SOC。SOPC系统的硬件由一个软核CPU(Altera的Nios II)加上各种标准的IP核及用户自定义IP核组成,Altera提供的Qsys嵌入式套件作为硬件系统的集成工具。SOPC软件系统可以使用高级C语言进行系统工程实现,Altera提供了基于开源的Eclipse的Ni
2、os II 11.1 Software Buider Tools for Eclipse来支持系统功能的开发。,5.1 SOPC设计5.1.1 概述作为PLD和ASIC,层次设计,Qsys内部互联,层次设计Qsys内部互联,Nios II系统框图,Nios II系统框图,Nios II处理器原理框图,Nios II处理器原理框图,Nios II硬件和软件开发流程图,软件的目录结构,Nios II硬件和软件开发流程图软件的目录结构,BSP工程的基本结构,基于HAL系统的层次结构图,BSP工程的基本结构基于HAL系统的层次结构图,5.1.2 Hello World工程1.硬件系统设计,Qsys界面
3、,CPU设置,5.1.2 Hello World工程1.硬件系统设计Q,设置外部SDRAM控制器,设置ROM控制器的数据及地址总线,设置ROM控制器的时序,设置外部SDRAM控制器设置ROM控制器的数据及地址总线设置,组件总线连接,外部Flash接口及三态桥的总线连接,jtag_uart设置,Sysid设置,组件总线连接外部Flash接口及三态桥的总线连接 jtag_,浮点硬件组件,sys_timer设置,浮点硬件组件sys_timer设置,系统总线连接,系统总线连接,系统地址空间分配,系统地址空间分配,最终生成的Qsys系统图,最终生成的Qsys系统图,CPU复位设置,生成Qsys系统,添加
4、sys_HD至顶层原理图文件,CPU复位设置生成Qsys系统添加sys_HD至顶层原理图文,顶层原理图,顶层原理图,采用的命令: to,location 采用的模板形式: to,location Name1 PIN_XX Name2 PIN_XX,插入工程配置,进行引脚锁定。,采用的命令: set_location_assignment -to采用的模板形式:set_location_assignmentPIN_XX -to Name1 set_location_assignmentPIN_XX -to Name2,使用tcl脚本,进行引脚锁定。,插入引脚配置,移除引脚配置,采用的命令: to
5、,location 插入工程配置,,Quartus II编程下载器,JTAG下载器设置,Configuration设置,转换sof文件,Quartus II编程下载器JTAG下载器设置 Confi,编程pof文件,编程pof文件,2.软件系统设计,打开Nios II SBT,选择Nios II视图,2.软件系统设计打开Nios II SBT选择Nios II,创建应用工程向导,创建完工程后的Nios II SBT界面,创建应用工程向导创建完工程后的Nios II SBT界面,BSP Editor Main标签页,运行Nios II硬件配置,查看系统ID属性,BSP Editor Main标签页
6、运行Nios II硬件配,Flash 编程设置,Flash编程对话框,Flash 编程设置Flash编程对话框,连接EPCS控制器到总线,CPU复位向量设置,EPCS控制器的引脚连接情况,设置EPCS外部引脚端口,连接EPCS控制器到总线CPU复位向量设置EPCS控制器的引,Flash编程,Flash编程,5.2 基于FPGA的PID算法实现5.2.1 概述,模拟PID控制系统原理框图,5.2 基于FPGA的PID算法实现5.2.1 概述模拟P,EDA技术及应用第5章-EDA技术工程应用实例-EDA技术与应用课件,EDA技术及应用第5章-EDA技术工程应用实例-EDA技术与应用课件,EDA技术
7、及应用第5章-EDA技术工程应用实例-EDA技术与应用课件,EDA技术及应用第5章-EDA技术工程应用实例-EDA技术与应用课件,位置式PID实现原理框图,使用了3个浮点乘法器、3个浮点加法器和3个寄存器,实现了位置式数字PID控制器。如果只需要增量型数字PID控制器,可以移除图中的虚线下方的加法器和寄存器即可。,位置式PID实现原理框图使用了3个浮点乘法器、3个浮点加法器,EDA技术及应用第5章-EDA技术工程应用实例-EDA技术与应用课件,EDA技术及应用第5章-EDA技术工程应用实例-EDA技术与应用课件,图5-52 PID顶层原理图,图5-52 PID顶层原理图,浮点数加减器创建向导第
8、2a页,浮点数加减器创建向导第1页,浮点乘法器向导第3页,浮点转换器向导第3页,浮点数加减器创建向导第2a页浮点数加减器创建向导第1页浮点乘,十进制数累加器向导第1页,十进制数累加器向导第4页,选择ALTPLL软核,十进制数累加器向导第1页十进制数累加器向导第4页选择ALTP,clk_pll创建向导第1页,clk_pll创建向导第2页,clk_pll创建向导第6页,clk_pll创建向导第8页,clk_pll创建向导第1页clk_pll创建向导第2页cl,counter_n计数器的源程序如下:library ieee;use IEEE.std_logic_1164.all;use IEEE.s
9、td_logic_arith.all;use IEEE.std_logic_unsigned.all;entity counter_n isgeneric (counter_cc: integer := 16; n_width:integer := 9); port( clk_c : in std_logic; ena : in std_logic; cc_out : out std_logic; rst : in std_logic );end counter_n ;architecture vco_do OF counter_n issignal reg_12 : std_logic_ve
10、ctor(n_width downto 0);signal cc_out_pre : std_logic;begin process(clk_c,rst) begin if rst = 1 then reg_12 0); cc_out_pre = counter_cc) then reg_12 0); cc_out_pre 0); cc_out_pre = 0; end if; cc_out = cc_out_pre; end process;end architecture vco_do;,counter_n计数器的源程序如下:,PID控制器仿真波形,PID控制器仿真波形,EDA技术及应用第
11、5章-EDA技术工程应用实例-EDA技术与应用课件,系统结构图,软PID控制的实现,系统结构图软PID控制的实现,Nios II处理器定制外设示意图,Nios II处理器定制外设示意图,EDA技术及应用第5章-EDA技术工程应用实例-EDA技术与应用课件,EDA技术及应用第5章-EDA技术工程应用实例-EDA技术与应用课件,EDA技术及应用第5章-EDA技术工程应用实例-EDA技术与应用课件,EDA技术及应用第5章-EDA技术工程应用实例-EDA技术与应用课件,EDA技术及应用第5章-EDA技术工程应用实例-EDA技术与应用课件,PWM组件的原理框图,式中,fPWM为PWM波形的频率;fclk
12、为PWM组件的工作时钟频率;CR为周期寄存器值。,PWM组件的原理框图式中,fPWM为PWM波形的频率;fcl,组件编辑器,PWM组件总线信号设置,设置总线的关联时钟和复位信号,组件编辑器PWM组件总线信号设置设置总线的关联时钟和复位信号,设置复位信号关联时钟,设置复位信号关联时钟,编写的软PID程序如下:/定义变量float r;/调整目标量float Kp; /PI调节的比例常数float Ti; /PI调节的积分常数float T; /采样周期float Td;/微分时间float a0;float a1;float a2;float ek; /偏差ekfloat ek1; /偏差ek-
13、1float ek2; /偏差ek-2float del_uk;/增量输出float uk; /位置量输出uk/PID参数初始化void PID_init(float rn) a0 = Kp*(1+T/Ti+Td/T); a1 = -Kp*(1+2*Td/T);a2 = -Kp*Td/T;r=rn;,/PID控制器核心子程序float PID_fix(float cn) ek2 = ek1; ek1 = ek;ek = r-cn;/计算误差 del_uk = a0*ek+a1*ek1+a2*ek2;/计算增量输出 /uk = del_uk + uk;/计算位置量输出 return del_uk;/AD采样子程序float AD_samp(void) float ad_val; /采样控制过程略 return ad_val;/主程序int main() PID_init(float rn);/PID初始化 while(1) /等待采样结束中断,调用AD_samp()输入采样数据 /PID输出量计算PID_fix(float cn) /调整PWM组件的占空比或者从D/A接口送出数据,编写的软PID程序如下:/PID控制器核心子程序,