微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 一个有趣的问题,请有兴趣的同学一起讨论!

一个有趣的问题,请有兴趣的同学一起讨论!

时间:10-02 整理:3721RD 点击:
手中有一块FPGA板卡,MCU一直给FPGA复位引脚高电平,也就是FPGA只上电时复位一次。
那此时有问题了,我重新下程序时,对于靠复位信号初始化为1的信号怎么办呢?
always@(posedge clk)
begin
        if(nreset==1'b0)
                signal <=1'b1;
        else
                signal <=1'b0;
end
类似于这种的,怎么办?实验证明,这种情况也能初始化signal <=1'b1成功!
之后,我做了实验,得出以下结论:
1、如果只有rst信号,rst是外部输入复位信号reset_n延迟两拍,rst可初始化
always@(posedge clk)
begin
        if(rst==1'b0)
                signal <=1'b1;
end
2、如果有rst,rst1,rst是外部输入复位信号reset_n延迟两拍,rst1是always块中直接赋值为1,rst可初始化
always@(posedge clk)
begin
        if(rst==1'b0)
                signal <=1'b1;
        else if(rst1==1'b0)
                signal <=1'b0;
end
3、如果有rst,rst1,rst是外部输入复位信号reset_n延迟两拍,rst1是rst延迟一拍,rst不可初始化
4、如果有rst,rst1,rst是外部输入复位信号reset_n延迟两拍,assign rst1 = rst,两者都可初始化
根据实验猜想:即使FPGA没有复位,下程序后一段时间内,外部输入高电平没到达内部,此时reset_n是低电平,过了这段时间后,外部输入到达,reset_n拉高,FPGA正好利用reset_n是低电平这段时间初始化!
欢迎各位同学大胆猜想,一起讨论!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top