首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

请教cpld扩展I/O口以及cpld上电初始状态(急)

请教cpld扩展I/O口以及cpld上电初始状态(急)

      用cpld为控制器扩展I/O口,控制器与I/O之间通过总线连接,现在控制器已经能够向I/O口写数据,不能读I/O口数据,一旦读I/O口,就造成控制器复位。读程序如下:

 if clk1'event and clk1='1' and rw='1' then
    if ctrl_reg(0)='0' and decoder_addr="0001" then
      databus<=IO2;
   else
      databus<="ZZZZZZZZ";
   end if;
 end if; 

   通过指示灯得知,cpld一上电,就执行 databus<=IO2;按道理,刚上电if条件不满足,不应该执行 databus<=IO2。就是因为上电时执行 databus<=IO2,导致控制器复位(可能是不该向数据总线上放数据时,放了数据)。如果把 databus<=IO2注释掉,就不会出现控制器复位。请问:

1. 怎样避免上电就执行 databus<=IO2?

2. 用的cpld是XC9572,没有加时序约束,行不行?

  我马上要交差,十万火急, 请大家多多帮忙!!!

1。加上电复位电路,让你的芯片从加电就一直处于明确状态;

2。如果速率不是很高的话可以不加时序约束;

美梦成真-->噩梦降临!
是的,在quartus中有一个设置reset 的,在setting&nbsp;&nbsp; device 中的ini done,他的作用是在启动的时候在pin1脚产生一个低电平,启动完了后变高。你在程序中加入是不是启动的判断条件就行了。
这个版主不太冷 =========================== 我的中电网博客:http://blog.chinaecnet.com/u/20/index.htm
返回列表