021-64886750

  • 实时目标机

    Simulink模型库

    Demo套件

info@yisuworld.com

Speedgoat FPGA板卡使用系列文章之时钟同步

网站首页    技术blog和使用技巧    Speedgoat FPGA板卡使用系列文章之时钟同步

HDL Coder :FPGA与CPU时钟同步、PCIe的锁存设置以及CPU对PCle端口的访问顺序查看方法的介绍

同步CPUFPGA时钟

 

在有些应用中需要同步FPGACPU的工作,典型的案例就是基于相电流反馈的PWM控制,因为在实时机FPGA板卡的时钟与CPU的时钟不是同一个时钟,无法做到严格的同步,如图1所示,那么控制效果也就无法达到理想的效果。那么我们就要来思考如何同步FPGACPU时钟。

 

img1

图1

时钟异步 >

 

 

模型中分别建立CPU模型和FPGA模型。两者的逻辑功能一致。如下图所示,图3为主模型的展开。

img2

图2

 

img3

 

图3

 

因为在实时机中FPGA板卡的时钟与CPU的时钟不是同一个时钟,即使在FPGA的模型中通过逻辑触发使得FPGA模型降频为,这时按照HDLWorkflowAdvisor编译FPGA子模型,并将主模型中的CPU模型和FPGA模型分别下载到实时机的CPUFPGA中,理论上两者的输出结果应该一致,但是从图4的离线和在线仿真结果来看,两者的输出并不一致。

img4

时钟 >

图4

 

这时我们只需要将FPGA模型的中断输出接口也就是图3中的Port2HDLWorkflowAdvisor 1.3中配置为中断源,然后在模型的Configuration Paramter中将实时机CPU的中断源从Timer修改为FPGA产生的中断源即可。具体的配置方式如图5、图6所示。

img5

图5

img6

图6

通过以上的配置,我们从仿真结果图7中可以看出CPU模型与FPGA模型的输出结果一致。也就是说如果想达到CPUFPGA同步的话,需要FPGA产生触发CPU模型运行的中断源。

img7

图7

 

锁存PCIe访问

CPU如果读取FPGA中的数据,需要通过PCIe总线进行传递,读取方式分为异步步读取(独立读取每个信号,如图8)、同步读取(锁存FPGA输出的向量信号,如图9),两者的具体操作如下图10所示。仿真结果图11所示,输入激励信号配置相同,采用异步输出时,输出结果不一致。同步输出时,因为在DUT_FPGA模型中将输出信号用MUX模块组成向量形式,在模型综合的时候,此处便加了锁存器,使的输出结果同步输出。

img8img9

图8                                      图9

 

img10

图10

img11

图11

 

所以我们在建模时要尽可能的将需要同步的信号用MUX模块组成向量形式,否则输出的结果可能无法达到理想的状态。

 

PCIe端口的访问顺序

如果我们想观察模型综合后,CPUPCIe端口的访问顺序,可以按如下做法观察。

MATLAB/Simulink 2019a 及以前版本具体操作 >

 

·       模型界面点击菜单栏Display;

·       点击Blocks;

·       点击Sorted Execution Order;

 

img12

图12

MATLAB/Simulink 2019a 以后版本具体操作 >

 

·                      模型的工具栏选中Debug;

·                      点击Information Overlays;

·                      选择Excution Order;

img13

图13

 

 

 

2020年8月6日 11:24
浏览量:0