pal多轴遏动叠制卡的 U夏 D'}L巨 C9亚 D -: P%}
The Design of PCI Interface with VHDL-CPLD in Multiaxle Motor Control
.上海豪威IC
有限公司怯肇乾
摘 要:本文从PCI和多轴运动控制器件的时序分析入手,重点阐述了PCI通信的CPLD状态机设计,
并说明了VHDL语.言的实现和MaxplusIl的验证
关健词:时序分析;CPLD器件;状态图;VHDL语言;PCI传输
PCI多轴运动控制 卡是精密伺服驱动控制系统中的主要部
件,传统设计多采用PC工桥件和运动控制器件构建,这样虽然开
发周期短,但成本却非常高。用℃PLD做PCI接口+
TMS320C2400系列DSP做运动控制器件”的设计,构成的系统简
洁可靠,成木低廉,开发周期短,是一种行之有效的板卡开发途
径。根据PC[总线的传输时序和运动控制器件的读写时序要求,
以Altera的CPLD器件和开发工具,使用、VHDL语言,进行状态机
构造,很快地实现了多轴运动控制卡的PCI接口设计,并进行了
功能模拟和定时分析,很好地达到了欲期目的。在系统编程、下
载器件、测试,工作效果很好。以下,介绍整个设计思想,供广大
同行参考。
接口系统模型简介
用CPLD做多轴运动控制卡的PCI接口,所构成的板卡系统
用图1描述
中,这些命令和参数对应不同地址的寄存器,每个寄存器字宽16
位,这些寄存器共用16个地址。对MCX314进行写操作后,最大
四个CLK周期内不能再连续读写操作,以使MCX314有足够时
问处理数据,外部表现为MCX314的BUSY#线在WR#写信号的
上升沿后最大二个SCLK周期期间保持低激活,SCLK周期是
CLK的两倍。下面图2-4是MCX314的读写时序图。表I是图
2-4中标示的时间要求范围。
进行PCI总线传输,至少需要40条信号接口,包括数据/地址
线、接口控制线、仲裁、总线命令及系统线等。每次数据传输由一
个地址脉冲和一个或几个数据脉冲组成。一次传输一个地址和
一个数据称为常规传输:一次传输一个地址和 批数据称为碎
发传输。根据MCX314的使用特点和读写时序,进行PCI传输,最
适宜采用常规传输。PCI常规传输常用的控制信号是:帧同步信
号FRAME#、主设备准备好信号IRDY#、从设备准备好信号
A 2-A O
?
?
???
乃 1 5- D O
图1 PCI-CPLD接n系统模型图
这里,CPLD/FPGA完成PCI主/从传输时序的逻辑构成与变
换,并直接对专用运动控制器件或TMS320C2400系列DSP进行
适当操作。整个系统的设计中,CPLD使用PCI总线的33MHz时
钟,以简化PCT传输的逻辑设计
图2 16位数据总线的MCX314读操作时序
A2-A O
?
???
??
总线传输时序分析
运动控制器件采川 日本NOVA的MCX314专用器件
MCX314是一款能够同时控制4个伺服马达或步进马达的运动
控制芯片,它以脉冲串形式输出,能对伺服马达和步进马达进行
位置控制、插补驱动、速度控制等实时监控。MCX314单独使用
16MHz晶振时钟。通过MCX314进行运动监控,主要是下达命
令,进行运动状态参数的读取或运动参数的发送。在MCX314
0 15- DO
t
l{ r 于 1 1
II认一z1 l
!只
图3 16位数据总线的 MCX314写操作时序
世界电子元器件 2004.3 口了.
TRD料、从设备选通信号DEVSEL#、命令/字节信号C旧E禅等。下
面图5荀是Pc工常规传输的典型时序图。
scL:一厂飞一厂入J尸又J一丫了爪‘
表 1:MCX314读写的时间要求范围
。一\— }十一— 卜一
Eus了
竺司卜一书 一 司
图4MCX3 14的BUSV时序
地址 、命 令出 理
主 没各发 送
寡裘委盆篡
组 项 符号 Min Max
地址建立时间
片选建立时间
坛 加S
卜R ons
输出数据延迟时间 偏 29ns
输出数据保持时间 t皿 ons 30ns
片选保持时间 坛 一
一器-地址保持时间 t就 onst辞
片选建之时问 份w ons
WR低电平脉宽 t” 51知5
输入数据设定时间
一
肠w 3加 5
输入数据保持时间 坛 10DS
片选保持时间 饭 5115
地址保持时间 _ t,^ . sns
峪 32刀5
从 4xClk+30ns
盯致 据传 箱
图SPcl常规读操作时序
CLK
主 设各 启动 传送
主 设各 发送
字 节仲 能
CZ厄豆
喜裘重盘二
(1)每次数据传输,主机通过Pcl首先传山地址和命令字,PCI
接口逻辑要能从地址中确定是不是对本机的访问,并锁存地址;
同时Pcl接口逻辑还要能从命令字中识别访问是读操作还是写
操作
(2)进行读写操作,Pcl接口逻辑要向PCI总线产生适当的
TIU)Y岸、DEVSEL#信号,只有在IRD划 、TRDY汽DE、SEL#都为
低状态时,Pcl操作才能完成;同时,PCI接口逻辑还需要向
Mcx314产生适当的片选cs#、读RD#或写WR#信号。
(3)对MCX314的读操作,Rl〕#信号的低有效时间要大于场的
最大值29ns。
(4)对Mcx314的写操作,要保证WR#信号的低有效脉宽tww
不小于50ns,输入数据的设定时间tn,不小于30ns,片选cs#与地
址保持时间要不小于sns。
(5)对Mcx314写操作后,在逻辑设计上要保证至少8个Pcl
时钟周期(33MHz)内主机不再对它进行读写操作,以使MCx3 14
有足够时间处理数据。即要插入适当时间的TRDY#信号,以使主
机能够产生等待,不操作MCx3 14器件
(6)片选CS#、读RD#、写从叹#有效期间,地址信号要始终有
效并确定为某一值
尝靡之蕊墓
DEVg卫IJ
图6PCI常规写操作时序
根据Mcx314器件和Pcl总线传输的特点,采用16位数据总
线使MCX314与PC I低端地址/数据线直接相连,可以有效地简化
设计和硬件结构
CpLO实现的状态机构设
状态机的构造
根据上述时序图的分析,完成此特定Pcl总线传输需要设计
七个状态:状态50标识PCI总线空闲时期;状态51标识地址与总
线命令识别阶段:状态52、54、56、57完成写操作及其写后的适当
等待周期 状态53、55完成读操作
.疚2 世界电子元器件 2004)
纂黝鄂蘸蘸蘸瓤蒸蒸翔日召舀创日
状态功能的确定
设计各状态执行以下功能:
状态SO-St:对PCI总线,置高信号TRDY#, DEVSEL#;对
MCX314,置高片选信号CS#,读信号RD#,写信号WR#,地址呈
现三态。在Si态还要完成:依据地址信号确定是不是对本机的选
择,并识别是不是读或写操作,锁存访问地址
状态S3, S5:对MCX314,产生低有效的片选信号CS#、读信
号RD#,并确定读写访问的地址。在S5态,对PCI总线,置低信号
TRDY#,DEVSEL#,以完成PCI读操作
状态S2, S4, S6, S7:对MCX314的片选信号CS#在S2态产
生,在S4, S6态保持,进入S7态结束;S2, S4态写信号WR#1氏有
效;S6态产生s个PC]周期长的等待时期;S7态置低信号TRDY#
以结束PCI写操作:在S2,S4,S7态,产生低有效的DEVSEL#
状态变化的确定
根据对PCI总线传输时序的分析,影响设想的各个状态相互
转化的因素是:帧同步信号FRAME#、主设备准备好信号
IRDY#、对从设备的读识别信号rea屯map,写识别信号wnte_map
及其等待状态计数器ace值。这里,用reades map,write~ map标识状
态S1产生的中间识别信号
需要注意,在状态S1要锁存收到的地址,在状态S6变化时要
适时进行时钟周期计数
还要注意,状态机设计时产生的容错问题,使非设计状态能
够无条件回到空闲态SO.
状态图的规划
综上所述,设计规划状态图如图7所示。
仃解:乞/一一几石一 ~、
图7设计规划状态图
VHDL语言的描述
设计使用四个进程和儿个并行语句,实现整个CPLD的功
能:一个进程完成从设备及其读写操作的识别:一个进程完成操
作地址的获取:一个进程完成写操作后等待态的插入; 一个进程
完成状态机的相互变化:几个并行语句完成操作信号的产生。需
要注意,各状态里完成的功能要用并行语句实现,不能再用进
程,否则就会引起逻辑综合的麻烦,甚至根木不能综合。整个程
序如下:
LIBRARY ieee;
USE ieee.std_ logic 1164.ALL;
USE ieee.std_logic unsigned.ALL;
ENTITY pci_ itfc IS
PORT(clk, rst, frame, irdy: IN STD_ LOGIC;
ad少igh:IN STD_ LOGICes VECTOR(? downto 4);
ad low:IN STD LOGIC VECTOR(3 downto 1);
c be: IN STD LOGIC VECTOR(3 downto 0);
trdy, devsel: OUT STDes LOGIC;
cs, rd, wr: OUT STD LOGIC;
addr : OUT STD~ LOGIC一ECTOR(2 downto 0));
END pci_ itfc;
ARCHITECTURE behave OF pci itfc IS
SIGNAL addr map;STDes LOGIC_ VECTOR(3 downto 1);
SIGNAL acc :STD LOGI几VECTOR(3 downto 0);
SIGNAL rd- map, wr map:STDes LOGIC;
TYPE state_ type IS (s0, sl, s2, s3, s4, s5, s6, s7 );
SIGNAL state:stale type;
BEGIN
identify: PROCESS (elk)一读、写、设备r -的识别
BEGIN
作rising edge(clk) THEN
IF c_ be=X"6" AND ades high=X"f' AND stated THEN
rdes map<='0';一读
wr map<='l;
ELSIF ces be=)07" AND adJhigh=X"f' AND state=sl THEN
rd-map,- '1;一写
wres m即‘='0;
ELSIE state=s0 THEN
rd map<='1';
wr-map <='I';
FND IF;
END作;
END PROCESS;
addr_capture : PROCESS (elk)一操作地址的获取
BEGIN
仆rising_edge(elk) THEN
IF state=sl THEN addr_map<=a走low;
END IF;
END IF;
END PROCESS;
delay-count: PROCESS (elk)一写迟延的增加
BEGIN
IF risinges edge(clk) THEN
IF state=s0 THEN acc <= "0000";
世界电子元器件 2004.3 叹夕.
???????????
ELSIF state=s6 THEN acc <= ace + l;
END IF;
END IF;
END PROCESS;
一操作信号的产生
addr <= "ZZZ" WHEN state = sO OR state二s7 ELSE
addr_map;
trdy <='0' WHEN state=s5 OR state=s7 ELSE
.11 ;
devscl< 'O' WHEN state--s2 OR state-s4 OR statc=s5
OR state = s6 OR state = s7 ELSE '1';
es <='1'认明 EN state-s0 OR state=sl OR state=s7 ELSE
幻.二
rd <='0' WHEN state=s3 OR state=-s5 ELSE
,1’;
.r <='O' WHEN state-s2 OR state--s4 ELSE
WHEN OTHERS => state <= s0;
END CASE;
〔ND IF;
END PROCESS state change;
END behave:
MaxPlusll的验证
设计CPLD,使用软件MaxPlusll进行逻辑综合、功能模拟与
定时分析。选用Altera的Max7000系列的在系统可编程器件
EPM7032S丁C44-10。下面是读写访问的仿真波形图:
Namfirst}clk
1 sa o - 」J 」 on ‘
3F0 15we r7
state change: PROCESS (elk, rst)一状态机的变化
BEGIN
IF rst '0' THEN state <= s0;
ELS任falling一dge(clk) THEN
CASE state IS
WHEN sO =>
IF frame '0' AND irdy=' I' THEN state<二sl;
ELSE state <= s0;
END IF;
WHEN sl=>
IF rd map ='O' THEN state<=O;
卜-- --- -- 二=== =‘--
图 8写操作的仿真模拟波形图
ELSIF wr map =V THEN state<=s2
ELSE state <= s0;
END IF;
WHEN s2 =>
IF frame 'I' AND irdy=0' THEN state <=s4;
ELSE state <= s0;
〔N〔】IF;
WHEN s3 =>
IF斤ame 'I' AND irdy='0' THEN state <= s5;
ELSE state令 s0;
END IF;
W HEN s4 =>
IF frame '1' AND irdy-0' THEN state <= s6;
ELSE state <= s0;
END IF;
WHEN s5 => stale <= s0;
WHEN s6 =
IF 8ame--1' AND irdyr 1' THEN state<=s0;
ELSIF acc=X"8" THEN state <= s7;
ELSE s以e <= s6;
END IF;
WHEN s7 => state <=s0;
图9读操作的仿真模拟波形图
图中,时钟周期为30nsa读操作,RD#信号的低有效时间为
60ns,大于tan的最大值29ns;读信号无效后地址稳定时间为1511s,
在此时间内结束读操作 写操作,WR#信号的低有效脉宽Was,大
于要求值50ns,输入数据设定:写信号结束后插入8个PCI时钟周
期,相当于4个MCX314时钟周期,此间,卞机不能操作MCX314,
MCX314有足够时间处理写入数据:片选CS#与地址保持时间都
远远大于要求值5m.口口
.吞4 世界电子元器件 2004.3