XP85118978 发表于 2014-8-12 22:53:27

求助,输出寄存器置1后自动清零

大家好,我在整一个工程时遇到个问题,就是我定义了一个输出寄存器,直接连到输出端,我在测试时,发现输出端我写1后,很短时间内又自个变为零了,而且感觉是代码没变的情况下,偶尔综合的又没有这种现象,不知是什么原因,请求大家帮忙看下,部分代码如下:
input GPIO_IN_0,GPIO_IN_1,GPIO_IN_2;
output GPIO_OUT_0;
output GPIO_OUT_1;
output GPIO_OUT_2;

reg GPIO_OUT_0;
reg GPIO_OUT_1;
reg GPIO_OUT_2;
always @ (posedge clk or negedge rst_n)
begin
if (!rst_n)
begin
        send_data <= 8'hFF;
        GPIO_OUT_0 <= 8'b0;
        GPIO_OUT_1 <= 8'b0;
        GPIO_OUT_2 <= 8'b0;
end
else if (GPIO_re_cmd) send_data <= {5'b0,GPIO_IN_2,GPIO_IN_1,GPIO_IN_0};
else if (GPIO_wr_cmd)
begin
case (GPIO_reg_sel)
        3'b0:GPIO_OUT_0 <= 8'b11111111;
        3'b1:GPIO_OUT_1 <= GPIO_OUT_tem;
        3'd2:GPIO_OUT_2 <= GPIO_OUT_tem;
        default:;
endcase
end

end
开发环境是京微雅格的Primace,用的是M5芯片。代码中就算我直接写GPIO_OUT_0等于8‘b11111111,输出的管脚值也只是在一瞬间是1,然后很快就又回到零了。小弟对fpga不熟,谢谢大家了。

cxhy 发表于 2014-8-12 23:54:08

本帖最后由 cxhy 于 2014-8-12 23:55 编辑

GPIO_re_cmd
GPIO_wr_cmd
send_data
这三个变量没有定义,这样没问题么?

XP85118978 发表于 2014-8-12 23:58:26

cxhy 发表于 2014-8-12 23:54
GPIO_re_cmd
GPIO_wr_cmd
send_data


你好,谢谢你的回复,这只是截取了一部分的代码,你提到的有定义的。

cxhy 发表于 2014-8-13 00:03:43

你说的把“直接写GPIO_OUT_0等于8‘b11111111”就是想你贴出来的那样么?如果是这样的话,会不会是因为受到GPIO_reg_sel这个变量的原因,导致GPIO_OUT_0这个变量跳到其它的值了,还有没有可能上电之后由于其他原因导致芯片复位了?

XP85118978 发表于 2014-8-13 00:15:49

cxhy 发表于 2014-8-13 00:03
你说的把“直接写GPIO_OUT_0等于8‘b11111111”就是想你贴出来的那样么?如果是这样的话,会不会是因为受到 ...

是的,就是我贴出来的那样。另外芯片复位应该不是的,因为其他模块工作仍然都是正常的。另外关于GPIO_reg_sel这个变量的话,我想不出有什么状况会导致GPIO_OUT_0变成0。

aikimi7 发表于 2014-8-13 10:43:11

你要解决问题,贴部分代码别人怎么给你解决啊?!

XP85118978 发表于 2014-8-13 20:09:07

谢谢大家的围观,问题解决,但是没找出哪里的问题,稀里糊涂的,又正常了。

flyfox8 发表于 2014-8-30 17:08:26

好奇LZ在哪里搞的京微雅格的FPGA。

XP85118978 发表于 2014-8-31 21:14:02

部门老大找代理商要的样片、仿真器,参加过研讨会后又送了个M5的demo板,后来好像就采购了一批,我也不知多少片
页: [1]
查看完整版本: 求助,输出寄存器置1后自动清零