首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在FPGA中使用两个外部复位:系统复位和MicroController复位(GPIO引脚)?

如何在FPGA中使用两个外部复位:系统复位和MicroController复位(GPIO引脚)?
EN

Stack Overflow用户
提问于 2020-04-22 01:34:26
回答 1查看 90关注 0票数 0

我正在使用一个带有XC7A35T的电路板。先前开发电路板硬件和代码的人员对micro和FPGA使用相同的外部有效低电平系统复位。问题是,外部低电平系统复位在通电后立即对FPGA没有影响,因为在加载配置存储器之前,外部低电平系统复位已经变为高电平。一个微控制器连接到FPGA,并且有一些备用的微控制器GPIO可以与有效低系统复位结合使用,但我确信如何正确地结合它们。

在现场可编程门阵列代码中,外部有效低电平系统复位称为SYSTEM_RESET_AL。这个重置由FPGA使用,如下所示(我只展示了几个PS_AL_RESET1)。

(* dont_touch = "true“*) IBUFG CMP_IBUFG_01 (.I(SYSTEM_RESET_AL),.O(PS_AL_RESET1));//高=正常,低=复位

(* dont_touch = "true“*) IBUFG CMP_IBUFG_02 (.I(PS_AL_RESET1),.O(PS_AL_RESET2));//高=正常,低=复位

(* dont_touch = "true“*) IBUFG CMP_IBUFG_03 (.I(PS_AL_RESET1),.O(PS_AL_RESET3));//高=正常,低=复位

考虑到GPIO被引用为DSPIO1,下面的编码方式正确吗?

wire DSPIO1_RESET_AL_AND_SYSTEM_RESET_AL;

assign DSPIO1_RESET_AL_AND_SYSTEM_RESET_AL = DSPIO1 & SYSTEM_RESET_AL;

(* dont_touch = "true“*) IBUFG CMP_IBUFG_01 (.I( DSPIO1_RESET_AL_AND_SYSTEM_RESET_AL),.O(PS_AL_RESET1));//高=正常,低=复位

我还添加了代码到微控制器,以切换DSPIO1 (低,等待100us,然后高)加载后的现场可编程门阵列配置。

在我添加了上面的代码后,一些FPGA功能停止工作。

我做错了什么?(旧的复位和新的复位原理图如下所示)

有没有更好的方法?

斯蒂芬

EN

回答 1

Stack Overflow用户

发布于 2020-04-22 07:55:05

考虑到在最初的设计中,复位从未被断言(当FPGA被编程时),我猜测设计中的复位逻辑有错误。例如,可能有一些东西无法处理异步重置,并陷入了糟糕的状态。

另一种可能是原来的设计是脆弱的,依赖于时钟网络上的复位(由dont_touch IBUFG建议),但你的组合复位不是。我很惊讶它让你把IBUFG放在不是输入引脚的东西上。你收到警告了吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61349586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档