pc104总线系统是一种新型的计算机测控平台,作为嵌入式pc的一种,在软件与硬件上与标准的台式pc(pc/at)体系结构完全兼容,它具有如下优点:体积小、十分紧凑,并采用模块化结构,功耗低,总线易于扩充,紧固堆叠方式安装,适合于制作高密度、小体积、便携式测试设备,因此在军用航空设备上有着广泛的应用,但也正是pc104板的这种小尺寸结构、板上可用空间少给设计带来了一定的困难,所以本设计采用了复杂可编程器件cpld,用cpld完成了pc104总线与429总线通讯的主要电路,大大节省了硬件资源,本文着重介绍了cpld部分的设计。
1 、系统总体设计
cpld是一种复杂的用户可编程逻辑器件,由于采用连续连接结构,易于预测延时,从而使电路仿真更加准确。再加上使用方便的开发工具,如max+plusii、quartus等,使用cpld器件可以极大地缩短产品开发周期,给设计修改带来很大方便。本论文描述了利用开发工具max+plus ii实现cpld处理arinc429数据通信。系统设计方案如图1所示。
arinc429收发电路部分,由两组3282和3l82芯片构成,其中每组芯片实现二路接收、一路发送,其中的控制信号均有cpld编程产生:在cpld部分,d[0.。.15]为16位双向数据总线,实现ar1nc429收发电路与pc104总线接口之间的数据通信,io16为16位芯片选择信号;在pc104总线接口部分,xd[0.。.15]为16位双向数据总线,xa[1.。.9]为地址总线,连接cpld,进行选片操作,xior和xiow 为io读写信号,xaen 是允许dma控制地址总线、数据总线和读写命令线进行dma传输以及对存储器和i/o设备的读写。
2、 系统硬件组成
429的pc104总线接口板的硬件组成框图如图2所示,主要包括ar1nc429收发电路(hs3282和hs3l82芯片组)、cpld、429板与pc 机的接口总线pc104总线、与外部的429接口idc16插座、中断控制开关等,其关系如图2所示。
本接口板元器件布局如图3所示。
3、 cpld内部功能及实现
3.1 开发流程描述
本系统中的cpld使用altera公司的max7000s系列可编程逻辑器件中的epm7128sqc100-6型号,从最初的电路设计思想到max+plusii的波形仿真,再到cpld芯片编程结束要经过的一般开发流程如图4所示。
3.2 cpld中的模块设计
本设计中cpld 的功能是实现arinc429收发电路与接口板的接口总线pc104总线的数据通信。其功能模块可以分为6部分,以下逐一介绍各模块的功能及其实现的方法。
(1)产生ar1nc429控制器hs3282所需的ttclk时钟信号模块
ttclk即发射器时钟信号,本设计中该信号有480 khz和1 mhz两种可选频率,是由一个48 mhz的晶振提供信号给cpld,然后由cpld编程产生480khz和1mhz两种信号以备选择。该模块用图形编辑的方式实现。要产生3282所需要的480khz信号需要对输入48mhz信号进行两次10分频,要产生1 mhz信号需要对输入信号进行6分频再8分频。6分频电路采用3个jk触发器实现,8分频电路采用74393实现,10分频电路采用7490实现。
(2)产生复位信号/mr和控制发射器使能信号entx的信号ent模块/mr是对3282的主复位信号,/mr将直接送到hs3282,而ent将送到另一模块中,用于控制发射器使能信号entx的产生,entx=ent*/txr,其中txr为发送缓冲区空标志。该模块也采用电路设计输入方式。其电路主要由4个d型触发器74ls74芯片来完成。输入为总线驱动器的前4个输出,即d0~d3,时钟脉冲为产生hs3282读写信号模块的一个输出信号/wr3,输出为两个hs3282的复位信号/mr1和/mr2以及ent1和ent2。本模块具体实现电路如图5所示。
(3)产生片选信号/mcs的模块
本模块产生的/mcs信号用于驱动双向总线驱动器,进行数据传输,并用于选片对hs3282进行读写。此模块用一片8位判决电路74ls688来实现其功能。其中p5-p1接一组基址选择开关,q5~q1分别接pc104总线的地址总线的xa7、xa9、xa8、xa6和xa5,g接pc104总线的地址使能信号端xaen。只有当xaen输入为低时,并且p5~pl与q5-q1的对应端相等时,输出为低,才有效。
(4)双向总线驱动器模块
该模块实现ar1nc429收发电路与接口板的接口总线pc104总线的16位数据传输。该模块设计过程为,先用vhdl设计输入方式设计两个单向三态数据收发器,然后用电路设计输入方式,将两个单向数据收发器合成为一个双向数据收发器。
双向总线驱动器模块产生其一个单向三态数据收发器(tri_gate1)的vhdl语言设计如下
library ieee;
use ieee.std_logic_1164.all;
entity tri_gate1 is
port(a0,al,a2,a3:in std_ logic;
a:in std_logic_vector(15 downto 4);
en:in std_logic;
b0,b1,b2,b3:out std_logic;
b:out std_logic_vector(15 downto 4):
d0,d1,d2,d3:out std_logic);
--向模块2中送数据的4个输出端
end tri_gatel;
architecture behav of tri_gate1 is
begin
process
begin
if en=‘1’ then --en为高电平时收发器有效
b0《=a0;b1《=a1;b2《=a2;b3《=a3;b《=a;
d0《=a0;d1《=a1;d2《=a2;d3《=a3;
else --en为低时高阻状态
b0《=一z;b1《=-z;b2《=-z ;b3《=‘z’;b《=“zzzzzzzzzzzz”;
end if
end process;
end behav;
产生另一个单向三态数据收发器(tri_gate)的vhdl语言与此类似,只是少了d0~d3的输出部分。两个单向三态数据收发器构成双向总线驱动器的电路设计如图6所示(d0_out~d3_out作为图5中的d0-d3输入)
(5)产生hs3282读信号与写信号和entx使能信号模块
本模块要实现的功能是产生hs3282的读写信号和发送使能信号及一个送入pc104总线的输入输出16位芯片选择信号/io16。该模块用vhdl语言输入,其相应的vhdl语言如下
library ieee;
use ieee.std logic_1164.all;
entity gal4243 is
port(mcs,xiow,xior,a1,a2,a3,a4,ent1,
ent2,txr1,txr2: in std_logic;
wr0,w rl,wr2,w r3,wr4,w r5,w r6:
out std_logic;
rd0,rd1,rd2,rd3,rd4:out std_logic;
io16,entx1,entx2:out std_logic);
end gal4243;
architecture behav of gal4243 is
begin
process
begin
wr6《=xiow or mcs or a4 or(not a3) or(not a2)or a1;
wr5《=xiow or mcs or a4 or(not a3) or a2 or(not a1);
wr4《=xiow or mcs or a4 or(not a3) or a2 or a1;
wr3《=xiow or mcs or a4 or a3 or(not a2)or(not a1);
wr2《=xiow or mcs or a4 or a3 or(not a2)or a1;
wr1《=xiow or mcs or a4 or a3 or a2 or(not a1);
wr0《=xiow or mcs or a4 ora3 or a2 or a1; --产生写信号
if mcs=‘0’ then
io16《=mcs;
else
io16《=‘z’;
endif;
rd4《=xior or mcs or(nota4)ora3 or a2;
rd3《=xior or mcs or a4 or(not a3)or(not a2);
rd2《=xior or mcs or a4 or(not a3)or a2;
rdi《=xior or mcs or a4 or a3 or(not a2)
rd0《=xior or mcs or a4 or a3 ora2;--产生读信号
entx1《=ent1 and(not txr1);
entx2《=ent2 and(not txr2);--产生发送使能信号
end process;
end behav;
(6)中断控制模块
本模块用于实现中断控制操作,有一个接收器满便产生中断,产生中断时亦能判断出中断源。该模块是用vhdl输入方式产生的,其相应的vhdl程序如下
library ieee;
use ieee.std logic_1164.all;
entity u32 is
port(txr1,dr11,dr12,txr2,dr21,dr22,rd4:in std_logic;
d0,d1,d2,d3,d4,d5,int:out std_logic);
end u32;
architecture behav of u32 is
begin
process
begin
if rd4=‘0’ then
d0《=not dr11:
d1《=not dr12;
d2《=not dr21;
d3《=not dr22;
--产生中断时用来判断哪个接收器满
d4《=txr1;
d5《=txr2;
--用来判断哪一个发送缓冲区空
else
d0《=‘z’;d1《‘z’;d2《=‘z’;d3《=‘z’;d4《=‘z’;d5《=‘z’;
endif;
int《=not(dr11 and dr12 and dr21 and dr22); --有一个接收器满便产生中断
end process;
end behav;
3.3 cpld程序的下载
各输入模块经过编译处理,根据其相互关系连结,再通过功能仿真和时序仿真确认无误后,对各输入输出端口进行管脚分配。当整个设计完成时,max+plusii将生成一个文件(.pof),该文件通过下载电缆从jtag口传送到pc104板上的cpld芯片内部。这样就可将cpld构造成自己的专用芯片,由此便可以对设计的pc104板卡进行调试。调试过程中cpld的设计部分还可根据需要进行修改,只是修改后要重新产生.pof文件,重新将文件加载到芯片中。
4、 结束语
针对pc104接口板的尺寸小的特点,本论文介绍了用cpld实现基于pc104总线的429接口板,cpld大大节省了硬件资源,同时也节省了板卡上的可利用空间,彻底解决了pc104 板卡的小尺寸给设计带来的困难。且cpld修改简单,给调试工作带来了方便。该板卡经过调试后实验,可稳定工作。实验结果表明:应用cpld简化了系统结构,缩短了设计周期,提高了系统的可靠性。
瑞萨电子推出新型全塑封型数字电源模块系列
苹果服务营收增速放缓 苹果代工厂满地鸡毛
利用MCP3008实现水传感器控制系统的设计
利用LS-SVM回归算法辨识模型参数实现传感器非线性校正的研究
闪存价格要大跌了?三星全球最大闪存芯片工厂将开工
采用可编程器件CPLD实现ARINC429收发电路与接口板的通信设计
快讯!!ARES-500AI和ARES-501AI现已支持openEuler(欧拉操作系统)
自动驾驶汽车=警车?
台积电10纳米芯片良率不高 或导致明年iPad生产延期
激光器的线宽的原理
使用单片机IO并行口直接驱动LED显示技术的实验说明
NI与中汽共建智能网联汽车虚拟仿真联合实验室
波音2019年商业飞机订单取消量超过购买量
AR技术在智慧交通上有什么应用的
互联网医疗能否改变如今看病难的问题吗
Linux常用命令总结
新一代绿色超声速民机将再次成为世界航空界的研究热点之一
电机中的噪声读不懂?鉴别与控制又该怎么做?
小米6什么时候发布?小米6最新消息:小米6即将上市,MIUI曝小米6重要细节,专属定制主题,还有更多特殊功
变频电动机的特点、常见故障诊断与检修措施