source.ant 发表于 2012-10-25 20:47:45

关于FPGA上电复位和输出端口初始值的问题

在做一些逻辑控制中经常需要FPGA或者CPLD的一组输出端口在上电时默认高低电平。有两种方法可以实现:

第一、最常用的方法是做一个外部RC复位,通过检测外部复位给输出端口赋默认高低电平。这种方法简单可靠。

第二、
但是当没有做外部RC硬件复位的时候怎么办呢! 这时我们很容易想到这样的方法
output dataout;
reg dataout = 6'b101001;
就和C语言的变量初始值一样。进过实验在ALTERA的FPGA上验证这种方法可以达到期望的效果。但是在CPLD上反复实验,这种方法不管用。现在做一个CPLD控制逻辑,必须要一个固定的上电端口初始值。但是板子上又没有RC电路,请高手指点怎样实现输出控制端口的上电初始态。

jlhgold 发表于 2012-10-25 21:45:20

能不能外部用排两个阻直接拉高 拉低?

source.ant 发表于 2012-10-25 22:07:07

jlhgold 发表于 2012-10-25 21:45 static/image/common/back.gif
能不能外部用排两个阻直接拉高 拉低?

这样没多大意义! 有可能端口状态需要改变。最好是代码控制

huatong 发表于 2012-10-25 22:13:19

reg por=1'b0;
reg POR_COUNT=16'h0000;
always@(posedge clk,negedge rst) begin
        if(!rst) begin
                por<=1'b0;
                POR_COUNT<=16'h0000;
        end else if(POR_COUNT==16'h1234)
                por<=1'b1;
        else
                POR_COUNT<=POR_COUNT+1;
end

huatong 发表于 2012-10-25 22:16:48

就算没有rst,总有clk吧,这个可能在上电的时候产生一个复位,在延时0x1234个时钟后复位拉高.有了复位就可以做好多事情了吧.

dashashi 发表于 2012-10-25 22:54:07

感觉应该有一个阶段是高阻的,还是上拉下拉好点

source.ant 发表于 2012-10-25 23:32:30

dashashi 发表于 2012-10-25 22:54 static/image/common/back.gif
感觉应该有一个阶段是高阻的,还是上拉下拉好点

我现在说的不是上电瞬间的状态,而是上电后长时间的状态。

source.ant 发表于 2012-10-25 23:36:17

huatong 发表于 2012-10-25 22:16 static/image/common/back.gif
就算没有rst,总有clk吧,这个可能在上电的时候产生一个复位,在延时0x1234个时钟后复位拉高.有了复位就可以做 ...

没有复位脚,怎么给内部用于计数的寄存器赋值,如果寄存器的值上电是不定值,那么不定值累加的结果还是不定值,怎么产生0X1234的固定数值呢?

huatong 发表于 2012-10-26 09:52:07

source.ant 发表于 2012-10-25 23:36 static/image/common/back.gif
没有复位脚,怎么给内部用于计数的寄存器赋值,如果寄存器的值上电是不定值,那么不定值累加的结果还是不 ...

这里只要初值的计数值不是0x1234的话它就会计数下去.你不放心的话可以在else那里加一句por<=1'b0就是了.

source.ant 发表于 2012-10-26 19:10:14

问题解决,直接在申明的时候赋值就可以
页: [1]
查看完整版本: 关于FPGA上电复位和输出端口初始值的问题