-
实时仿真用户案例
Crank-嵌入式GUI设计和开发用户案例
021-64886750
-
实时目标机
Simulink模型库
Demo套件
info@yisuworld.com
Speedgoat FPGA板卡使用系列文章之时钟同步
HDL Coder :FPGA与CPU时钟同步、PCIe的锁存设置以及CPU对PCle端口的访问顺序查看方法的介绍
同步CPU与FPGA时钟
在有些应用中需要同步FPGA和CPU的工作,典型的案例就是基于相电流反馈的PWM控制,因为在实时机中FPGA板卡的时钟与CPU的时钟不是同一个时钟,无法做到严格的同步,如图1所示,那么控制效果也就无法达到理想的效果。那么我们就要来思考如何同步FPGA和CPU时钟。
图1
时钟异步 > |
模型中分别建立CPU模型和FPGA模型。两者的逻辑功能一致。如下图所示,图3为主模型的展开。
图2
图3
因为在实时机中FPGA板卡的时钟与CPU的时钟不是同一个时钟,即使在FPGA的模型中通过逻辑触发使得FPGA模型降频为,这时按照HDLWorkflowAdvisor编译FPGA子模型,并将主模型中的CPU模型和FPGA模型分别下载到实时机的CPU和FPGA中,理论上两者的输出结果应该一致,但是从图4的离线和在线仿真结果来看,两者的输出并不一致。
时钟同步 > |
这时我们只需要将FPGA模型的中断输出接口也就是图3中的Port2在HDLWorkflowAdvisor 1.3中配置为中断源,然后在模型的Configuration Paramter中将实时机CPU的中断源从Timer修改为FPGA产生的中断源即可。具体的配置方式如图5、图6所示。
图5
图6
通过以上的配置,我们从仿真结果图7中可以看出CPU模型与FPGA模型的输出结果一致。也就是说如果想达到CPU与FPGA同步的话,需要FPGA产生触发CPU模型运行的中断源。
图7
锁存PCIe访问
CPU如果读取FPGA中的数据,需要通过PCIe总线进行传递,读取方式分为异步步读取(独立读取每个信号,如图8)、同步读取(锁存FPGA输出的向量信号,如图9),两者的具体操作如下图10所示。仿真结果图11所示,输入激励信号配置相同,采用异步输出时,输出结果不一致。同步输出时,因为在DUT_FPGA模型中将输出信号用MUX模块组成向量形式,在模型综合的时候,此处便加了锁存器,使的输出结果同步输出。
图8 图9
图10
图11
所以我们在建模时要尽可能的将需要同步的信号用MUX模块组成向量形式,否则输出的结果可能无法达到理想的状态。
PCIe端口的访问顺序
如果我们想观察模型综合后,CPU对PCIe端口的访问顺序,可以按如下做法观察。
MATLAB/Simulink 2019a 及以前版本具体操作 > |
· 模型界面点击菜单栏Display;
· 点击Blocks;
· 点击Sorted Execution Order;
图12
MATLAB/Simulink 2019a 以后版本具体操作 > |
· 模型的工具栏选中Debug;
· 点击Information Overlays;
· 选择Excution Order;
图13
-
电力电子(含控制器和被控对象模型)
凭借多年在电力电子行业累积的经验和能力,我们为用户提供控制器模型和被控对象模型,包括标准库以及定制化服务。¥ 0.00立即购买
-
轨道交通(含控制器和被控对象模型)
凭借多年在轨道交通行业累积的经验和能力,我们为用户提供控制器模型和被控对象模型,包括标准库以及定制化服务。¥ 0.00立即购买
-
信号调理系统
在HIL测试中,硬件在环设备起到模拟被测ECU被控对象的作用。需要根据ECU的PIN脚信息,模拟相应信号。这类设备的核心为实时系统,实时系统会提供相应IO通道,处理信号的产生和采集。但这类IO通道一般为标准规格,比如数字通道为TTL规格,模拟通道只是测电压等;这与被测ECU所需的信号规格有较大差异,故需要一套信号调理系统,负责两者之间信号的转接。¥ 0.00立即购买
-
电机控制Demo套件
使用Simulink和Speedgoat转动无刷直流电机。¥ 0.00立即购买
实时目标机
实时仿真应用场景
学习与支持
关于我们
关注Speedgoat微信公众号
实时仿真解决方案
I/O接口模块
通讯协议模块
FPGA技术
被控部件仿真
Simulink模型库
Demo套件
Speedgoat实时仿真与测试
Crank嵌入式GUI设计与开发