单片机与一个PCI设备间通信的情况解析方案
来源:华强电子网 作者:—— 时间:2012-09-07 11:35
SUBDESIGN abelpci
(
P2[7..3] : INPUT;
READ0 : INPUT
WRITE0 : INPUT;
P0[7..0] : BIDIR;
CLK : INPUT;
TRDY0 : INPUT;
AD[31..] : BIDIR;
CBE[3..0] : BIDIR;
IRDY0 : OUTPUT;
FRAME0 : OUTPUT;
)
VARIABLE
decoder : 16dmux;
mycounter : abelcounter;
pci_c[NextPage]本文相关DataSheet:MAX7000 EPM7128
be : 8DFFE;
PCI_address0 : 8DFFE;
pci_datas0 : 8DFFE;
pci_request[6..0] : mylatch1;
pci_request7 : mylatchc;
pci_data0 : mylatch8;
pci_data1 : mylatch8;
pci_data2 : mylatch8;
pci_data3 : mylatch8;
ss : MACHINE OF BITS (FRAME0,IRDY0)
WITH STATES(s0 = B"11",
s1=B"01");
s2=B"10";
S3=B"11");
BEGIN
decoder.(d,c,b,a)=P2[6..3];
enareg[]=decoder.q[];
pci_che.ena=enareg[0]&p2[7];
pci_cbe.d[]=p0[];
pci_cbe.clk=!WRITE0;
pci_address0.ena=enareg[1]&p2[7]l
pci_address0.d[]=P0[];
pci_datas0.ena=enareg[9]&P2[7];
pci_datas0.d[]=P0[];
pci_datas0.clk=!WRITE0;
pci_data0.gate=!TRDY0;
pci_data0.data[]=AD[7..0];
pci_data1.gate=!TRDY0;
pci_data1.data[]=AD[15..8];
pci_data2.gate=!TRDY0;
pci_data2.data[]=AD[23..16];
pci_data3.gate=!TRDY0;
pci_data3.data[]=AD[31..24];
pci_request[3..0].gate=!TRDY0;
pci_request7.gate=!TRDY0;
pci_request7.aclr=P2[7]&!WRITE0;
pci_request[3..0].data=CBE[];
pci_request[4].data=IRDY0;
pci_request[5].data=FRAME0;
pci_request[6].data=Vcc;
pci_request7.data=Vcc;
eread=P2[7]&!READ0 & WRITE0;
my_P0_data0[].in=pci_data0.q[];
my_P0_data0[].oe=enareg[5]&eread;
my_P0_data1[].in=pci_data1.q[];
my_P0_data1[].oe=enareg[6]&eread;
my_P0_data2[].in=pci_data2.q[];
my_P0_data2[].oe=enareg[7]&eread;
my_P0_data3[].in=pci_data3.q[];
my_P0_data3[].oe=enareg[8]&eread;
my_P0_request[6..0].in=pci_request[6..0].q;
my_P0_request[7].in=pci_request7.q;
my_P0_request[].oe=enareg[13]&eread;
out_P0[]=my_P0_data0[];
out_P0[]=my_P0_data1[];
out_P0[]=my_P0_data2[];
out_P0[]=my_P0_data3[];
out_P0[]=my_P0_request[];
P0[]=out_P0[];
enclr=enareg[0]&P2[7]&!WRITE0;
mycounter.clock=CLK;
mycounter、cnt_en=!IRDY0;
mycounter.aclr=!FRAME0;
mycounter.sset=!TRDY0;
ss.clk=!CLK;
ss.reset=enclr;
ss.ena=Vcc;
CASE ss IS
WHEN s0 => ss="s1";
WHEN s1 => ss="s2";
WHEN s2 => IF mycounter.cout THEN ss =s3;ELSE ss="s2";
END IF;
WHENf s3 => ss="s3";
END CASE;
my_AD_address[7..0].in=in=pci_[NextPage]本文相关DataSheet:MAX7000 EPM7128
address0;
my_AD_address[31..8].in=GND;
my_AD_address[31..0].oe=!FRAME0;
my_CBE_c[].in=PCI_cbe.d[3..0];
my_CBE_c[].oe=!FRAME0;
my_AD_data[31..0].in=pci_datas0.q[8..1];
my_AD_data[31..0].oe=pci_cbe_[0]&FRAME0;
my_CBE_be[].in=pci_cbe.d[7..4];
my_CBE_be[].oe=FRAME0;
out_AD[]=my_AD_address[];
out_AD[]=my_AD_data[];
AD[]=out_AD[];
out_CBE[]=my_CBE_c[];
out_CBE[]=my_CBE_be[];
CBE[]=out_CBE[];
END;
2.2 单片机PCI读写C语言程序设计
&nb
sp; 在CPLD在帮助下,单片机读写PCI设备就变得相当简单。首先,将pci_cbe等寄存器都声明为外部存储器变量,并根据CPLD的设计指定地址。然后,传递适当的参数给以下两个读写子函数,即可完成对PCI设备配置空间、I/O空间、存储器空间的读写操作。从PCI设备的返回数据存放在全局变量savedata中。
- •新品发布 | 96MHz主频 M0+内核低功耗单片机CW32L011产品介绍2025-05-07
- •宇凡微13万转暴力风扇无刷电机集成驱动方案,加速市场布局2024-07-11
- •大联大世平集团推出基于耐能Kneron产品的AI相机方案2023-06-15
- •大联大友尚集团推出基于CVITEK和SOI产品的网络摄像机(IPC)方案2023-02-16
- •武汉通信与电子信息技术研发基地(一期)项目封顶2022-05-27
- •尊湃通讯完成数亿人民币Pre-A轮融资,致力于提供全系列Wi-Fi芯片及解决方案2022-05-09
- •佳讯飞鸿携手华为签约莫桑比克铁路综合调度通信系统项目2022-03-23
- •培育壮大通讯通信产业 10个项目签约安徽马鞍山2021-02-24
- •AMD持续关注人员、地球和目标,推动技术进步,用心造福社会2020-12-15
- •2020年上半年全球通信设备市场:华为排名第一,份额是诺基亚两倍2020-09-10