关于FPGA上电复位和输出端口初始值的问题
在做一些逻辑控制中经常需要FPGA或者CPLD的一组输出端口在上电时默认高低电平。有两种方法可以实现:第一、最常用的方法是做一个外部RC复位,通过检测外部复位给输出端口赋默认高低电平。这种方法简单可靠。
第二、
但是当没有做外部RC硬件复位的时候怎么办呢! 这时我们很容易想到这样的方法
output dataout;
reg dataout = 6'b101001;
就和C语言的变量初始值一样。进过实验在ALTERA的FPGA上验证这种方法可以达到期望的效果。但是在CPLD上反复实验,这种方法不管用。现在做一个CPLD控制逻辑,必须要一个固定的上电端口初始值。但是板子上又没有RC电路,请高手指点怎样实现输出控制端口的上电初始态。 能不能外部用排两个阻直接拉高 拉低? jlhgold 发表于 2012-10-25 21:45 static/image/common/back.gif
能不能外部用排两个阻直接拉高 拉低?
这样没多大意义! 有可能端口状态需要改变。最好是代码控制 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
就算没有rst,总有clk吧,这个可能在上电的时候产生一个复位,在延时0x1234个时钟后复位拉高.有了复位就可以做好多事情了吧. 感觉应该有一个阶段是高阻的,还是上拉下拉好点 dashashi 发表于 2012-10-25 22:54 static/image/common/back.gif
感觉应该有一个阶段是高阻的,还是上拉下拉好点
我现在说的不是上电瞬间的状态,而是上电后长时间的状态。 huatong 发表于 2012-10-25 22:16 static/image/common/back.gif
就算没有rst,总有clk吧,这个可能在上电的时候产生一个复位,在延时0x1234个时钟后复位拉高.有了复位就可以做 ...
没有复位脚,怎么给内部用于计数的寄存器赋值,如果寄存器的值上电是不定值,那么不定值累加的结果还是不定值,怎么产生0X1234的固定数值呢? source.ant 发表于 2012-10-25 23:36 static/image/common/back.gif
没有复位脚,怎么给内部用于计数的寄存器赋值,如果寄存器的值上电是不定值,那么不定值累加的结果还是不 ...
这里只要初值的计数值不是0x1234的话它就会计数下去.你不放心的话可以在else那里加一句por<=1'b0就是了.
问题解决,直接在申明的时候赋值就可以
页:
[1]