|

楼主 |
发表于 2009-2-15 19:13:06
|
显示全部楼层
来自: 中国湖北武汉
对TMS320C32的开发可以用汇编语言,也可以用C语言。使用汇编语言的优点在于运行速度快、可以充分利用芯片的硬件特性,但开发速度较慢,程序的可读性差;而C语言的优势在于编程容易、调试快速、可读性好,可以大大缩短开发周期,但C语言对于其片内的没有映射地址的特殊功能寄存器不能操作,如IF和IE,AR0~AR7等。 + `) { y7 m3 g7 l
1 c. ]: G/ ^) o+ q
1.2 FPGA模块
! B. N* c! h- ]) {
) w2 |. q/ b, K; F 该部分主要功能为一个4通道的针对光栅尺的脉冲计数器
9 u: L; \/ S' r9 [- w,此外,还承担部分地址译码的工作。但由于脉冲计数频率高,计数量大,所以必须选择高容量、高性能的可编程逻辑器件。
; O- P% g8 c3 Y, |6 s( U" G. W# J; E3 a
ALTERA FLEX(Flexible Logic Element Matrix)10K 系列FPGA,规模从一万门到十万门,可提供720~5392个触发器及6144~24576位RAM,提供30ns、40ns及50ns等几个速率等级,可适应18~105MHz的信号处理速率。ALTERA FLEX10K系列FPGA主要由输入输出单元IOE、掩埋阵列EAB、逻辑阵列LAB及内部连线组成。EAB是在输入和输出端口加有寄存器的RAM块,其容量可灵活变化。所以,EAB不仅可以用于存储器,还可以事先写入查表值来用它构成如乘法器、纠错逻辑等电路。当用于RAM时,EAB可配制成多种形式的字宽和容量。
: e5 |: h0 Z4 W+ O0 y3 B) ]& X' W
! m, _$ o; ?; N) l/ V3 i/ F( p LAB主要用于逻辑电路设计,一个LAB包括8个逻辑单元LE,每一个LAB提供4个控制信号及其反相信号,其中两个可用于时钟信号。每一个LE包括组合逻辑及一个可编程触发器。触发器可被配成D,T,JK,RS等各种形式。IOE提供全局的时钟及清零信号输入端口,还提供具有可编程性的各种输入输出端口,如低噪声端口、高速端口等。 ; n7 f2 \. k% w
$ |+ m) A8 `* V& K+ n
FLEX10K系列芯片是ALTERA公司新近推出的PLD产品。与ALTERA公司先前推出的MAX7000系列EPLD相比,FLEX10K(以下简称10K)系列具有更加丰富的内部资源(最多可达10万门),更加充裕的可配置的I/O管脚(最多达406条)。再加上其低廉的价格,使得10K系列芯片受到越来越多用户的欢迎。 2 Z z/ B8 f6 a; }. A9 \5 H
# Q S7 d; m! h$ q6 ?& m1 K
基于以上原因,我们在本方案中采用ALTERA FLEX10K10,并且考虑到以后设计的连续性,我们可以无需更改硬件电路,就可以更换性能更高的、相同尺寸、相同管脚配置的ALTERA FLEX10K20。 , ]4 ^4 L. g8 x8 }0 l3 `5 g3 E
* P) E9 r6 O) N, t, ?4 Y4 {* S
1.3 PC通信接口模块 1 Y' S. U+ [9 N$ Q% [* w
0 Y! w! N0 Z. a& {5 J3 G
该模块选用16位的ISA总线与PC相连,CY7C133双口RAM用作数据缓冲。
' [- t/ X( e2 ^' t q) h! L3 j% K: t" C! K+ P% p5 c0 T
ISA总线的使用十分灵活、方便,而且I/O操作比较简单。虽然ISA总线的引脚多但并不是都要用到的,关键是几个固定引脚的应用,例如:I/O CH RDY、I/OR、I/OW、ALE、数据线和地址线,结合起来实现通信。 # f @6 f2 M4 X, f# o6 `* |
6 v5 Q& G$ x' n# Z: i 在本系统中,双口RAM的 PC端地址线并没有直接采用ISA过来的地址线,而是由FPGA内部地址计数器给定。这是因为,ISA总线上大部分地址都已经被PC系统分配好,直接把2K的双口RAM数据空间映射到ISA总线上并不现实;而且控制系统与PC交换的数据基本上是一系列加工点的坐标参数,采用顺序访问对性能没有影响。因此采用地址计数器方式的顺序访问,完全能够达到设计的要求。
/ G5 g7 y2 U8 J4 g" q9 |$ q ; a, J$ z3 W4 P
具体做法是:ISA地址线的A2~A9接到地址比较器74LS688,与设定好的地址作比较,74LS688的片选信号由ISA的IOR和IOW的“与”提供(IOR和IOW在ISA总线访问端口时低有效),A0,A1接到FPGA,用于选择FPGA内部4个功能不同的寄存器。ISA的ALE用于触发FPGA 内部逻辑功能,锁存ISA总线过来的信号,如图2所示。
& g4 y8 C+ @- `* C" _7 t \6 a4 m3 \) X/ i! ]4 K3 W8 M
当访问地址清零寄存器时,地址计数值清零;当访问地址增加寄存器时,地址计数值增加“1”。如此类推,访问不同的寄存器就对地址计数值完成不同的操作,把地址计数值直接作为地址送给双口RAM,就可以实现ISA总线访问双口RAM了。
2 k$ f& a+ d$ C* Y' M6 b' ^$ s) r7 Y8 E8 [
1.4 输出模块 % r. k! {, P7 T
) V! t K5 H# y, S6 H% Y# _&nbs
! z; c! V; [" H+ Z) Zp; 输出模块采用模拟输出,经外部放大驱动电机的方案。D/A转换芯片选择DAC7744。
) n- j* l( }1 ^5 @& C0 F; o/ ` [
' Q1 c6 I5 Q) }1 p DAC7744是高性能的4通道16位高速D/A,主要特点如下:
8 @% \5 ~5 g4 L
% ]9 ], {- y1 g4 T7 W5 `0 w6 b● 输出通道:独立4 路
" f- K) m5 ]6 I# E. ~% H; a● 输出信号范围:0~5V;0~10V;±5V;±10V
7 ~: t3 `7 Y+ H● 输出阻抗:≤2Ω % o1 w) c, |* I' D& Z
● D/A转换器件:DAC7744
/ ^" g8 J" [& E( V, {" K# _/ f! a● D/A转换分辨率:16位
! y- Z; | n* H4 N) E● D/A转换码制:二进制原码(单极性) 二进制偏移码(双极性) & Z8 e; A1 X: |( N$ v
● D/A转换时间:≤1μs
: O. M9 k e6 _● D/A转换综合误差:≤0.02% FSR
; \( e6 R9 ]' S/ c; L* A# r● 电压输出方式负载能力:5mA/路
3 v# c7 x3 r: v, Y, S" |1 p6 l6 K2 i9 C- s2 O& ]+ \5 R; Y9 z5 c
1.5 存储模块
' k/ I" x5 X B+ R5 u% a + I6 ?4 f3 j- Z
5 l1 ]. C# ~: z8 K/ R% r# E/ Z R 存储模块用于存储系统程序和数据,主要由SRAM(2片CY7C1021)和FLASH(AM29F400B)组成。外围存储电路如图3所示。
# G; S0 E1 P. W. f6 S' R6 ?3 w 2 软件设计 4 G# g+ W7 ]2 r6 J1 Q6 A
* j! T" P: N2 J3 J0 K( F+ v+ A 该运动控制卡应用时插在工控机的ISA槽上,与上位机配合工作。首先在上位NC机输入加工曲线,由上位机做粗插补,然后把数据通过ISA接口传递给控制卡。控制卡对接收到的数据再做细插补——采用三次B样条插值,然后发送给DA,驱动电机运动。DSP通过FPGA进行脉冲计数,读出直线电机光栅尺的反馈信息,然后采用离散PID控制算法调整,以便于电机运动控制的最优化。 / Q8 h3 s& j- F. W9 P. K/ F3 m8 _7 u
$ P+ \- j N$ h3 L, z
运动控制算法的核心是先用B样条插值法把目标点进一步细化,使运动曲线更平滑,然后在运动过程中采用PID算法进行调整,最终达到高速高精的设计要求,图3给出了系统软件流程图。
* K% F( J9 c0 U, U* J7 D c" r) T% C
q# R9 R2 |0 ?5 I; r) H; F9 ` 2.1 B样条插值
V9 A2 O( Z0 i0 x6 N% ^
$ r* q/ O$ d |7 b q/ t/ @- Z
0 b9 F' T( D! N$ {0 w# `. l, N 目前许多先进的CAD/CAM系统都采用了B样条曲线。其特点是,可用统一的数学形式精确表示分析曲线(如直线,圆锥曲线等)和自由曲线(如均匀B样条曲线等),因而便于用统一的数据库管理、存储,程序量可以大大减少;非均匀B样条曲线定义中的权因子使外形设计更加灵活方便,设计人员通过调整具有直观几何意义的点、线、面元素即可达到预期的效果。
* f" W8 [$ R8 n0 L' Y" {! c
Q1 M3 `! \: u; d) B 本系统采用三次B样条曲线作为精插补算法,该算法应用在控制卡中可以得到比较满意的效果。计算过程中只需要相邻4个点的位置数据,(x0,y0),(x1,y1),(x2,y2),(x3,y3),就可以构造出平滑的曲线。 6 S2 f+ S7 ^& K
+ v3 u5 O6 P3 x; b. f5 r% Q1 g 公式以坐标分量形式表示为: 2 {+ G3 V7 W: `2 w
z8 b( I( `) I4 E9 c, I# v
" v- A9 F, A, `& R p; G; y 2.2 PID控制
1 J2 K( @5 P g$ b$ Y2 W4 o( n% ?/ P' K3 H$ p5 N$ S
在控制领域中,PID控制算法是一种常用的算法,PID是比例、积分、微分的缩写。PID的合理的参数估计、比较,可以通过MATLAB的传递函数模型仿真来得到。 3 `. n g2 i' T# B5 L
* e9 Q4 A: Y0 p8 `; E
由于该系统是数字系统,采用的都是数字量,所以必须把PID算法离散化才能使用。又由于系统的存储空间有限,算法的存储空间开销不能太大,所以采用了离散化的增量式PID算法。该算法在运算过程中只需要保留最近3次的误差数据,就能够推导出下一次的输出量,节省了大量的数据空间,提高了运算速度,有很强实用价值。
& u4 a8 ~: a; g: r
; o2 X; K& c6 o$ T. i( R& g% {1 ?0 }; ]- J &nb ! T( C* T( T' F6 U: |& i
sp; 公式如下: - b9 y& j( _/ j. ^* d( L
( }$ X& \! M2 ?' E+ f- E
# s: g5 h) }( R% I8 n6 X [/ n μ( k ),μ( k-1 )分别是k和k-1时刻的输出量,在系统中体现为DA的输出量。 0 I l2 s+ o0 \! H
e( k ),e( k-1 ),e( k-2 )分别是k,k-1,k-2 时刻的偏差值,在系统中体现为该时刻实际位置与目标位置的偏差。
9 X3 ~ _5 m3 I' ^) _) v T,Td,Ti,Kp是PID公式的常量,不同的数值代表着PID系统的微分、积分、比例调节作用的强度和效果。 4 J9 |1 V) x" l9 f" w% [
3 小结 0 b* @7 ~1 d6 L( j- ~
~9 r3 Q) q$ l) |. \; t3 i
在开放式数控系统中应用基于DSP+FPGA的运动控制卡,DSP承担了CNC系统中实时性要求较高的模块功能。利用DSP高速运算能力和实时信号处理能力,采用先进的Bspline插补算法,使该DSP运动控制卡具有高速、高精度的性能,结合FPGA芯片的先进技术,使该运动控制卡的集成性、可靠性大大提高。本运动控制卡目前是基于ISA总线设计的,今后将考虑把该系统移植到PCI总线上,将能进一步提高系统的处理速度能力,适应更高要求。 |
|