基于CPLD的激光标刻运动控制卡PC/104接口设计
摘 要:针对传统激光标刻机体积大,运行不稳定等缺点,提出使用嵌入式工控机加运动板卡的设计思路,设计基于CPLD的PC/104总线接口。采用握手通信思想,构造数据读/写权限寄存器,同时结合有限状态机实现上、下位机数据并行传输。实验仿真证明,传输效果能达到快速稳定,并且实际标刻应用验证了该接口设计的可行性与有效性。
关键词:激光标刻;PC/104;CPLD;VHDL
中图分类号:TP336文献标识码:B
文章编号:1004-373X(2010)06-087-03
Design of PC/104 Interface for CPLD-based Motion Controller in Laser Marking System
WANG Dongliang,WU Huaiyu,CHENG Lei,HU Lin,WU Ruohong
(College of Information Science and Engineering,Wuhan University of Science and Technology,Wuhan,430081,China)
Abstract:Aiming at disadvantages of the traditional laser marking machine such as bigger in size and running unstable,an idea that using embedded computer and the board of motion controller is proposed,and PC/104 interface based on CPLD is designed.Using the idea of handshake,a data register that decides read-write is structured and data parallel transmission with the finite state machine is realized.The simulation proves that the data access is rapid and stable.The application results show that the design of interface is efficient and feasible.
Keywords:laser marking;PC/104;CPLD;VHDL
0 引 言
振镜式激光标刻机已成为激光标刻行业中的主流产品。目前,大多数激光标刻机都采用基于通用PC的控制方案[1],然而通用PC安装软件较多,占用系统资源较大,故设计基于嵌入式技术的运动控制卡,也已成为振镜式激光标刻机的研究热点。PC/104总线是一种专门为嵌入式控制而定义的工业总线,其优点为体积小,可靠性高,采用模块化结构,易于总线扩展,因此PC/104总线在工业控制领域得到广泛应用。
市面上已有的PC/104总线接口芯片,功能固定,不适合激光标刻运动控制卡升级。然而FPGA/CPLD在数字逻辑设计中的灵活性和稳定性,符合本接口设计要求,故这里选用Altera公司MAX3000系列的CPLD,设计PC/104接口,实现激光标刻运动控制卡的数据传输。
1 总体设计
振镜式激光标刻机系统框图如图1所示,运动控制卡核心模块分为DSP控制模块和数据通信模块。运动控制卡工作流程:复杂的图像编译由工控机完成,处理后的数据通过PC/104总线下载到下位机DSP中,由DSP完成图像插补校正,实时控制激光标刻过程,从而实现脱机打标。
图1 激光标刻机系统框图
数据通信模块主要解决的是工控机与DSP之间数据传输。PC/104总线执行ISA总线标准,DSP芯片选用ADI公司的Blackfin 533,芯片数据接口采用外部总线接口单元(EBIU)。因此数据通信模块实际上解决可见,PC/104总线与EBIU接口之间的数据传输[7]。使用CPLD实现数据总线逻辑桥接,即合理又有效。
2 PC/104接口设计
PC/104总线是ISA总线标准的延伸[8]。在设计中用到的PC/104总线引脚主要包含:12位地址线,16位数据线;I/O读/写信号线;I/O 16位芯片选择信号线;总线地址锁存信号线。有了上述信号线,就可以根据ISA总线时序设计PC/104接口。
Black fin533系列的外部总线接口单元(EBIU)[9],支持外设无缝连接。在使用中,仅需将CPLD看作DSP的外设即可,直接连线,无需编写EBIU的总线时序。在设计中用到的引脚主要包含8根地址线;16位数据线;存储空间Bank选择信号线;输出使能信号线;读使能信号线。
该接口的设计思路是将数据传输过程分为两部分,一个是数据通过PC/104传输到CPLD,按照PC/104时序;另一个是CPLD向DSP传输数据。由于PC/104时序简单,EBIU无缝连接,单独两部分使用CPLD实现不难。但问题的关键是CPLD接收到数据后,如何告知DSP来读数,并且在DSP未读走数据时如何告知上位机不能发数。对此该设计采用简单中断方式和状态寄存器标识方案解决上述问题。在PC/104的一次读写周期内,当上位机向CPLD发送一帧16位数据,锁存于内部寄存器。与此同时CPLD向DSP发送中断信号,告知其读取数据,并且由CPLD改变状态寄存器值,该状态值表示工控机不能写数据,而DSP读数据。当DSP进入中断程序,读取数据后,再次改变状态寄存器值,此时该状态值表示DSP已经读走数据,工控机可以发下一帧数据。以此类推,实现上、下位机的数据通信。该解决方案不仅可实现数据快速准确的通信,而且也能实现激光标刻机脱机标刻。状态寄存器真值表如表1所示。
表1 状态寄存器真值表
00无效状态
01工控机写,DSP不能读
10工控机不能写,DSP读
11复位
结合总体设计思路,根据PC/104的16位总线时序逻辑,设计的逻辑状态机如图2所示。
图2 逻辑状态机
逻辑时序分析如下:
(1) 空闲状态。上电后,CPLD全局复位(包括对DSP的复位),进入空闲状态。数据总线进入三态,CPLD内部所有寄存器清零。
(2) 地址译码状态。当上位机发送数据,在总线地址锁存信号BALE下升沿有效时,将总线地址锁存入CPLD内部地址锁存器中。当I/O读写信号有效时,进入地址译码状态,将锁存器中的地址信息进行译码。
(3) 数据传输状态。当总线地址为合法地址时,先读取状态寄存器值,判定读/写权限后,再进入数据传输状态;若地址不合法,直接退回空闲状态。
(4) 等待状态。数据传输完毕,需保持一个时钟周期,数据线进入三态,内部寄存器清零,释放被占设备。在下一个时钟周期到来时,进入空闲状态,等待下一数据的传输。
设计中还要注意运动板卡I/O空间的设置,由于上层操作系统对PC/104总线预留有地址范围,故CPLD内部寄存器的地址设置必须在此范围内。结合该设计,数据寄存器地址为0X980,状态寄存器地址为0X9A0。
PC/104总线有8位和16位两种数据传输模式,在该设计中,使用的是16位传输模式,故I/O 16位芯片选择信号线在读/写周期内始终为低电平。
3 CPLD程序实现
该设计采用VHDL语言编写程序,开发环境使用Quartus Ⅱ;CPLD器件选择较常见的EPM3256-ATC144[10]。状态机和状态寄存器部分的伪代码如下:
状态编码:使用格雷码。格雷码是一种常见的无权码,其特点为各编码具有相邻性。采用此编码,可以避免在组合逻辑中出现的竞争冒险。
constant 状态:std_logic_vector(2 downto 0) := "xxx";
状态机跳转实现:
process(当前状态,跳转条件) begin
case 当前状态 is
when当前状态 =>
if (跳转条件) then
下一状态<= 下一状态;
else
下一状态<= 当前状态;
end if;
when OTHERS =>
下一状态<= 初始状态;
end case;
end process;
PC/104写数据:
process(时钟,复位) begin
if (复位) then
数据寄存器 <= (others => ′0′);
elsif rising_edge(时钟)then
if (读条件)then
if(地址合法 ) then
数据寄存器 <= PC/104总线数据;
end if;
end if;
end if;
end process;
DSP 读数据:
DSP数据<= DSP数据寄存器 when 读条件else
"ZZZZZZZZZZZZZZZZ";
process(时钟,复位) begin
if(复位) then
DSP数据寄存器<= (others => ′0′);
elsif rising_edge(时钟) then
if(地址合法) then
DSP数据寄存器<=数据寄存器;
end if;
end if;
end process;
状态寄存器权限:
process(时钟,复位) begin
if(复位) then
状态寄存器<= ′11′;
elsif rising_edge(时钟) then
if (CPLD写) then
状态寄存器<= ′01′;
elsif(DSP读) then
状态寄存器<= ′10′;
end if;
end if;
end process;
4 实验结果与分析
图3给出在Quartus Ⅱ中仿真的波形。
图3 仿真图
由仿真图形看出,当PC/104一个读/写周期内,上位机往数据寄存器地址0X980传送数据,通过CPLD的逻辑桥接,数据无误地传输到DSP。当向不合法地址0X986传送数据时,CPLD数据寄存器内部值并没替换,所以传到DSP的数据仍为上一读写周期内寄存的数据。由此可以清楚地看出,总线数据传输符合设计要求。
将程序下载到实验板进行实际标刻。上位机待标刻图案如图4(a)所示,金属薄片实际标刻效果如图4(b)所示。
从实际应用看,上位机标刻软件产生的标刻图案与实际标刻图案吻合,且标刻正常,并未出现过烧,不均匀现象,说明上下位机的数据通信正常,验证了该设计思路的正确性。
图4 激光标刻实际应用
5 结 语
采用可编程逻辑器件CPLD,运用VHDL语言编写代码,实现了PC/104与DSP之间的数据通信,并将此接口设计应用于嵌入式激光标刻运动控制卡,充分发挥嵌入式技术实时性高,性能稳定的优点,最终实现脱机标刻。
参考文献
[1]蒋毅,周宏,蒋明,等.基于PC的激光标刻系统控制卡设计[J].计算机测量与控制,2004,12(6):544-546.
[2]赵巍,撒昱.激光标刻系统研究综述[J].天津工程师范学院学报,2006(1):26-28,42.
[3]蔡培,孙超群,王树立,等.基于PC/104总线和FPGA的运动控制卡的设计[J].制造业自动化,2008(11):68-70.
[4]陈兵,金敏.DSP 技术在激光标刻控制中的运用[J].机械与电子,2004(6):28-29.
[5]阳彦字,李建武,汪盛烈,等.激光打标控制原理及嵌入式系统设计[J].中国激光,2004(3):344-346.
[6]林锦赞,王孝洪,田联房,等.基于PC/104和CPLD的巡线机器人运动控制实现[J].机械与电子,2008(9):53-55.
[7]喻骏,李鹏.PC/104总线与DSP数据通信接口设计[J].现代电子技术,2005,28(2):44-45,48.
[8]PC/104 Specification v2.4.PC/104 Embedded Consortium.2001.
[9]Analog Devices Inc.ADSP-BF533 Blackfin Hardware Re-ference.Preliminary Revision.2003.
[10]MAX 3 000 A Programmable Logic Device Family DataSheet.2006.
上一篇:浅谈计算机网络管理与网络安全
下一篇:民用无人机地面站发展的分析研究