微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > VHDL实现PCI配置寄存器

VHDL实现PCI配置寄存器

时间:10-02 整理:3721RD 点击:
PCI的配置寄存器的首部格式为64个双字,用AD[7..2]寻址它们时地址是什么样的,是线性递增1,还是线性递增4?我是这样写的:
WHEN"000000"=>
SFG_DATA<="00011000011000000001000010110101";
WHEN"000001"=>
SFG_DATA<="00000000000001000000010000000000";
WHEN"000010"=>
SFG_DATA<="00010001100000000000000000000000";
WHEN"000011"=>
SFG_DATA<="00000000000000000000000000000000";

VHDL实现PCI配置寄存器
你这不是线性递增四么?

VHDL实现PCI配置寄存器
你需要正确理解寻址的概念。
你可以这样理解,寻址的基本单位是字节,例如:地址线是A[7:0],则0x00、0x01、0x02...都是对应各个字节。如果要以DWORD(4个字节)为单位寻址,则需使用地址线A[7:2],A[1:0]用于选择DWORD内的各个字节。
关于更加准确的解释,你可以随便参考一本有关计算机的教材。

VHDL实现PCI配置寄存器
原来是这样的啊

VHDL实现PCI配置寄存器
我是以DWORD(4个字节)为单位寻址的,用的是AD[7..2],但是在配置空间读写时,设备的IDSEL引脚有效,且AD[1..0]=00时,该设备被选为配置读写的目标,AD[7..2]用于寻址64个双字配置寄存器的头部空间。在配置空间读写时AD[1..0]只能是00吧?

VHDL实现PCI配置寄存器
是啊!而且如果是“类型0”的配置周期AD[10:8]也是000

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top