我最近在用microblaze作一个flash的控制器,具体就是用microblaze的EMC来产生控制时序来读写板上的flash芯片,遇到了两个问题,希望达人能帮下忙:
(1)首先是EMC产生WE信号的问题,因为读写flash要求的速率比较高,所以当然是希望WE的周期越小越好,我修改了EMC的几个参数,具体如下:
# #120000
 ARAMETER C_TCEDV_PS_MEM_0 = 120000
# #120000
 ARAMETER C_TAVDV_PS_MEM_0 = 120000
# #35000
 ARAMETER C_THZCE_PS_MEM_0 = 35000
# #15000
 ARAMETER C_THZOE_PS_MEM_0 = 15000
# #120000
# 120000
 ARAMETER C_TWC_PS_MEM_0 = 500
# #70000
# 70000
 ARAMETER C_TWP_PS_MEM_0 = 30
最下面两个是控制WE的,但是PARAMETER C_TWC_PS_MEM_0改到10000以下后WE的周期就不再减小了,一直是287ns,这个时间我总觉得有点不太正常,我的板上晶振是75M的,一个时钟周期才十几个ns,所以想请教一下,是不是我设置的方法不正确?我是觉得有毛病。
(2)第二个是延时的问题,为了测试一些语句的具体执行时间,我用了一个while循环来用示波器观察,程序是这样的:
while(1)
{
// for(i=0;i<100;i++);
XGpio_mSetDataReg(XPAR_TEST_HOLES_BASEADDR, 1,0xff);
// for(i=0;i<1;i++);
i = 0;
i = 1;
i = 2;
i = 3;
i = 4;
i = 5;
i = 6;
i = 7;
XGpio_mSetDataReg(XPAR_TEST_HOLES_BASEADDR, 1,0x00);
}
测试中发现,for循环一次的时间是80ns,但是改用上面的那些i = 0;之类的赋值语句时就不能产生延时的效果,具体就是在示波器上看不出来波形的变化,就算赋值语句的执行时间短一些,那我加了很多条语句也应该能有变化阿
小弟是初学者,问题可能出在我的操作方法上,希望高手能提出点批评意见,不胜感谢!
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |