17.08.2013 Views

下载 - Xilinx

下载 - Xilinx

下载 - Xilinx

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

A s k F A E - x<br />

pid_addsub = Y1 + Y2;<br />

tmp = pid_addsub + pid_mult;<br />

tmp = (tmp > max_limU) ?<br />

max_limU : tmp;<br />

U = (tmp < min_limU) ?<br />

min_limU : tmp;<br />

// PID effective<br />

// output signal<br />

dout[0] = U;<br />

// test the PID error<br />

// signal as output<br />

dout[1] = E;<br />

// update internal states<br />

// for the next iteration<br />

prev_X1 = X1;<br />

prev_Y1 = Y1;<br />

prev_INT= INT;<br />

图 4 - Vivado HLs 截屏所示的是同一 PID C++ 设计的两种备选解决方案的性能估计<br />

return;<br />

}<br />

设定 Zynq-7010 CLG400-1 器件的目标时钟周期为 10 纳<br />

秒,PID 实现在该 FPGA 的 32 位浮点算术单元中。首次运行<br />

Vivado HLs(图 4 中的“solution1”),估计的时钟周期为 8.49<br />

纳秒,与 FPGA 的 118MHz 时钟频率对应。由于生成输出需<br />

要 49 个时钟周期的时延,有效数据速率为 2.4Msps。布局布<br />

线前估计 FPGA 占用面积为 7 个 DsP48E slice,1,105 个触<br />

发器和 1,790 个查找表。<br />

通过分析 Vivado HLs 生成的报告文件,发现工具生成了<br />

两个浮点加法减法器内核。因此采用下列指令:<br />

set_directive_interface -mode ap_fifo<br />

"PID_Controller" coeff<br />

set_directive_interface -mode ap_fifo<br />

"PID_Controller" din<br />

38 赛灵思中国通讯 46 期 2012 年冬季刊

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!