我正在使用一个带有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功能停止工作。
我做错了什么?(旧的复位和新的复位原理图如下所示)
有没有更好的方法?
斯蒂芬
发布于 2020-04-22 07:55:05
考虑到在最初的设计中,复位从未被断言(当FPGA被编程时),我猜测设计中的复位逻辑有错误。例如,可能有一些东西无法处理异步重置,并陷入了糟糕的状态。
另一种可能是原来的设计是脆弱的,依赖于时钟网络上的复位(由dont_touch IBUFG建议),但你的组合复位不是。我很惊讶它让你把IBUFG放在不是输入引脚的东西上。你收到警告了吗?
https://stackoverflow.com/questions/61349586
复制相似问题