打印
[FPGA]

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

[复制链接]
974|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
294897997|  楼主 | 2014-5-22 16:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
手中有一块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是低电平这段时间初始化!

欢迎各位同学大胆猜想,一起讨论!
               
评分
参与人数 1威望 +2 收起 理由
gaochy1126 + 2 很给力!

相关帖子

沙发
294897997|  楼主 | 2014-7-23 13:45 | 只看该作者
现在回头想想,FPGA在配置完成,释放GSR时,所有寄存器是会拉低的,nreset是靠这种方式拉低来置位signal的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

34

帖子

1

粉丝