阅读:1452回复:10
S5933+CPLD的一个问题
直通(PT)方式下,如果要使用两个PT REGION,一个I/O方式,一个MEMORY方式,在CPLD里怎么判断总线来的是I/O数据还是MEMORY数据?是S5933的各个管脚输出不同,还是总线上传输的地址不同?
对了,这个地址段就是配置空间基址寄存器的值吗? 谢谢各位! |
|
沙发#
发布于:2002-11-10 14:51
管脚的输出不一样,因为你的两个空间不同,分别设置在配置空间中基址寄存器的1-4中的两个里面,地址输出一般也不一样的。地址总线上的地址是从属于你设置的两个空间中的。你的基址寄存器中的数据是两个空间的首址
|
|
板凳#
发布于:2002-11-11 17:49
就是问管脚输出哪一点不同,是哪个管脚?假如用8位数据总线,12位的地址线(即4K),那么地址应该怎么算?基址积存器可是32位啊,我看资料上说是4位段地址左移,16位偏移地址,可这是4M的,我没看明白。还说系统会将分配的实际物理地址写回配置空间。那么该用什么地址值呀,怎么用?
谢谢 |
|
地板#
发布于:2002-11-11 19:32
我不清楚你为什么追问这个问题!在S5933与PCI的接口已确定,32位的数据/地址总线,你访问的任何寄存器都是基地址+偏移量,基地址的取得通过系统得到的(在驱动程序中做),偏移地址在数据手册中有!这个问题很容易解决!不信你试试!
|
|
|
地下室#
发布于:2002-11-12 04:41
我不清楚你为什么追问这个问题!在S5933与PCI的接口已确定,32位的数据/地址总线,你访问的任何寄存器都是基地址+偏移量,基地址的取得通过系统得到的(在驱动程序中做),偏移地址在数据手册中有!这个问题很容易解决!不信你试试! 我正是想用12位数据/地址总线,其中数据线8位,地址线12位。这一点我很迷惑。 |
|
5楼#
发布于:2002-11-15 11:31
根据PTNUM1,和PTNUM0这两根信号线,来选择读取不同的存取区域,
如果是MEMORY需要读取/写地址帧。 有一点我不明白,PASS THRU方式,无法看到数据传输是否完成?如果我想先输出一个双字,接着再读取一个双字,我没法知道数据输出是否完成?输入数据是否已经准备好?各位大虾请多发表意见。 |
|
6楼#
发布于:2002-11-15 13:25
dxfer trdy信号好好看。
|
|
7楼#
发布于:2002-11-18 11:56
给了一次分后怎么再给分啊?
|
|
8楼#
发布于:2002-11-18 14:10
不可以了,除非重新开贴
你的问题我好像见过,记不太清了 大致是这样的:地址输出是数据地址复用,你可以取低12位所存作为地址,就是地址译码的方式,类似于单片机,如果不太清楚,我们可以再交流 |
|
9楼#
发布于:2002-11-19 10:21
:D
我想明白了,其实这个问题很简单,就是用地址寄存器输出数据,再用数据几春器将数据镀金来。 |
|
10楼#
发布于:2002-11-19 12:04
谢谢各位了!!!!
MENGFAF你说的判断数据传输似乎就是用寄存器将数据锁存住,然后配合各握手信号来操作。 我正在做一块PCI的板子,从软件到硬件一整套都在弄,有机会希望与各位多交流。 |
|