TI的专家,您好
我们现使用的处理器是TMS570LC4357,处理器通过EMIF与FPGA通讯。总线配置为异步,16位,普通模式,详细配置的代码如下:
emifREG->CE3CFG = (0U << EMIF_BIT_SS) |
(0U << EMIF_BIT_EW) |
(1U << EMIF_BIT_W_SETUP) |
(14U << EMIF_BIT_W_STROBE) |
(0U << EMIF_BIT_W_HOLD) |
(15U << EMIF_BIT_R_SETUP) |
(15U << EMIF_BIT_R_STROBE) |
(0U << EMIF_BIT_R_HOLD) |
(1U << EMIF_BIT_TA) |
(1U << EMIF_BIT_ASIZE);
根据以往经验,读写过程中nDQM的时序是差不多的,nDQM01先拉低一段时间,拉高后隔一段时间nDQM2再拉低。
但是通过FPGA观察到的nDQM信号时序不正常。写入时,nDQM0和1被同时拉低;读取时,nDQM0先拉低一段时间,拉高后隔一段时间nDQM1再拉低。
我们查找手册并没有找到关于nDQM信号的设置部分,请问TMS570LC4357的nDQM信号正常的时序是怎样的?有没有寄存器来配置?
谢谢
Susan Yang:
您指的是如下图?
user5655976:
回复 Susan Yang:
我在文档中看到过这个时序图,我现在的问题是:
在配置了16位总线通讯后,当执行一次写入或者读取一个字的操作时,具体nDQM的时序应该是怎样的?在这个图上不能体现出来。
比如说我在代码中对于分配到地址0x64000000的变量uint16 a,执行一次a=0x1234,此时,nDQM的时序是怎样的?
1、是0x1234同时送上数据总线,并且nDQM[0,1]都为低,还是说一个先以后为低,顺序和保持低的时间是怎样的?
2、进一步的问题是,有没有寄存器可以配置这个行为,还是说是固定的?谢谢
user5655976:
回复 user5655976:
您好,这个问题能解答吗?谢谢
Susan Yang:
回复 user5655976:
很抱歉,我昨天有点事,所以延迟了回复
我已经在E2E上为您寻求了资深工程师的帮助,您可以看一下是否需要补充
e2e.ti.com/…/804227
user5655976:
回复 Susan Yang:
您好,刚刚查看了一下还没有答复,希望能早点的答复。
此外,我们有一个新的问题,就是在EMIF上送出数据大小端的问题。根据我们所知,TMS570LC4357是大端的。
从EMIF送出去的数据是否可以通过配置改变大小端呢?
例如,我们外部空间0x64027000定义一个U16 data,写入0xA55A这个值,
如果是大端的情况下,先送出低地址,nDQM0为低,值为0xA5;然后送出高地址,nDQM1为低,值为0x5A。
我们想知道是否可以通过配置,改变这个行为。先送出高地址,DQM1为低,值为0xA5;然后送出低地址,nDQM0为低,值为0x5A。
Susan Yang:
回复 user5655976:
很高兴您能解决问题,谢谢分享解决方法!
user4256184:
楼主您好,想请教一下EMIF与FPGA通讯配置为异步模式,但FPGA内部的双口RAM是同步的,这个RAM的时钟线是怎么连接的,恳请赐教
user5655976:
回复 user4256184:
你好,我们的FPGA中对所有的EMIF信号都使用FPGA的时钟信号做了同步,RAM使用的就是FPGA的时钟信号。
user4256184:
回复 user5655976:
好的,明白了,感谢您的指导!