我用的是P89C669 单片机,外接了Lattice M4A5的CPLD,以及外部SRAM(SAMSUNG K6*4008C1F 512K)。 通过CPLD来扩展地址线,具体接法如下: 单片机P0口直接与SRAM的8位数据线(D7-D0) 连接, 作为低8位地址(A0-A7)和数据线(D0-D7) 单片机的P2口(A8-A15)与SRAM的高地址(A8-A15)连接,同时也与CPLD连接 CPLD 另外再输出SRAM的(A16-A18) 另外单片机的WR接到CPLD的某个I/O口,再有CPLD另一个IO口接到SRAM的WE; RD直接接到SRAM的OE,同时也接到CPLD的某个IO口。CPLD某个IO口接到SRAM的片选CS 通过以上连接就实现了:SRAM所需要的19位地址线, 以及OE和WE以及片选CS。这样就应该可以读写SRAM了。 但是测试的时候总是失败,先写到SRAM的某个地址,然后再从该地址读出数据,读出来的数据总是错误的,而且是个固定的值。 后来干脆直接在CPLD里给出片选信号CS,以及A16-A18,和WE信号,这样只把SRAM当作64K来使用,仍然读出错误的数据。线路连接应该没有问题,检查了好几次了。不知为何? |