17.08.2013 Views

下载 - Xilinx

下载 - Xilinx

下载 - Xilinx

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

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

等式 7<br />

w = ones(1, numel(t)); w(1:4) = 0;<br />

C = (contr_d.Ts - 2*contr_d.Tf) / ...<br />

(contr_d.Ts + 2*contr_d.Tf);<br />

Gd = 2*contr_d.Kd / (contr_d.Ts + ...<br />

2*contr_d.Tf);<br />

Gi = contr_d.Ki * contr_d.Ts/2;<br />

Gp = contr_d.Kp;<br />

% closed loop<br />

e_prev = 0; % e(n-1)<br />

yi_prev = 0; % yi(n-1)<br />

yd_prev = 0; % yd(n-1)<br />

y_z1 = 0; % y(n-1)<br />

y_z2 = 0; % y(n-2)<br />

u_z1 = 0; % u(n-1)<br />

u_z2 = 0; % u(n-2)<br />

for i = 1 : numel(w)<br />

% error<br />

e(i) = w(i) - y_z1; % CLOSED LOOP<br />

% derivation<br />

yd(i) = -C*yd_prev + e(i) - e_prev;<br />

yd_prev = yd(i);<br />

% integration<br />

yi(i) = yi_prev + e(i) + e_prev;<br />

yi_prev = yi(i); e_prev = e(i);<br />

% PID<br />

u(i) = e(i) * Gp + Gd*yd(i) + Gi*yi(i);<br />

% plant<br />

y(i) = 1.903*y_z1 -0.9048*y_z2 + ...<br />

1e-5*(2.38*u(i) + 4.76*u_z1 + ...<br />

2.38*u_z2);<br />

y_z2 = y_z1; y_z1 = y(i);<br />

u_z2 = u_z1; u_z1 = u(i);<br />

36 赛灵思中国通讯 46 期 2012 年冬季刊<br />

end<br />

figure; plot(t, y, ‘g’); grid;<br />

title ‘Closed Loop Step: plant+contr’;<br />

使用 VIVADO HLS 实现的 PID 设计的性能<br />

Vivado HLs 是最新一代赛灵思设计工具。它能够用 C、<br />

C++ 和 system C 编写的高级规范自动生成生产质量级 RTL<br />

实现。换句话说,Vivado HLs 可实现手动流程的自动化,从<br />

而消除众多设计错误来源,并加速开发周期中极为漫长且经常<br />

反复操作的部分的设计进程。<br />

Vivado HLs 在设计中采用了两种截然不同的综合方法。<br />

其中算法综合负责取出函数内容,在一定数量的时钟周期里,<br />

把功能描述综合到 RTL 描述。而接口综合则负责把函数参数<br />

转换为有特定时序协议的 RTL 端口,以便设计与系统中的其<br />

它设计通信。可以在全局变量、顶级函数参数和顶级函数返回<br />

值之上运行接口综合。<br />

综合流程分步执行。第一步是抽取 C 代码推断的控制与<br />

数据路径。接口综合会影响算法综合可实现的结果,反之亦然。<br />

与任何手动 RTL 设计中得到的众多决策一样,结果将是大量<br />

可用的实现和优化以及数量更大的根据其相互影响关系得到的<br />

变体。Vivado HLs 让用户从这些细节中脱身,以最短的时间<br />

高效率地确定最佳设计。Vivado HLs 根据自身的默省设置,<br />

加上用户设定的约束和指令,迅速创建出最佳实现方案。<br />

Vivado HLs 的核心流程是调度和捆绑。调度流程负责向<br />

特定时钟周期分配每一次运算。调度流程中制定的决策需要考<br />

虑时钟频率、时钟非确定性、器件技术库的时序信息以及面积、<br />

时延和吞吐量指令等诸多因素。捆绑是用于判断何种硬件资源<br />

或者内核用于每次调度操作的流程。例如,Vivado HLs 会自<br />

动判断是否同时使用加法器和减法器,或者是否单个加法减法<br />

器就能处理两次运算。因为捆绑流程制定的决策会影响运算的<br />

调度,比如用流水线化的乘法器代替标准的组合乘法器,因此,<br />

调度过程中应考虑捆绑决策。<br />

Vivado HLs 通过如下方式可以加速验证和设计优化进程:

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

Saved successfully!

Ooh no, something went wrong!