Verilog 计数器问题 100
我用verilog写了一个计数器代码如下:modulecounter(RST,CLK,D,Q);inputwireRST,CLK,D;output[7:0]Q;reg[7...
我用verilog写了一个计数器代码如下:
module counter(RST,CLK,D,Q);
input wire RST,CLK,D;
output [7:0]Q;
reg [7:0]Q;
always @(posedge CLK or negedge RST) begin
if(!RST) Q<=0;
else if(D) Q<=Q+1;
end
endmodule
D是一个使能位。我用FPGA模拟出来后,把D连着一个开关。可是当我把开关从off调整到on时(从GND到VCC),计数器没有计数。只有一开始把开关调到on(VCC),才能计数,这是为什么?我换了好几块板了都不行。大神帮我看看是哪里写错了 展开
module counter(RST,CLK,D,Q);
input wire RST,CLK,D;
output [7:0]Q;
reg [7:0]Q;
always @(posedge CLK or negedge RST) begin
if(!RST) Q<=0;
else if(D) Q<=Q+1;
end
endmodule
D是一个使能位。我用FPGA模拟出来后,把D连着一个开关。可是当我把开关从off调整到on时(从GND到VCC),计数器没有计数。只有一开始把开关调到on(VCC),才能计数,这是为什么?我换了好几块板了都不行。大神帮我看看是哪里写错了 展开
展开全部
因为你的D不是边沿触发的,你是直接接到开关上的。
再写一段逻辑保证你的D是边沿触发的就是了。
module counter(RST,CLK,D,Q);
input wire RST,CLK,D;
output [7:0]Q;
reg [7:0]Q;
reg en;
always @(negedge D or negedge RST) begin
if(!RST) en <= 1'b0;
else en <= 1'b1;
end
always @(posedge CLK or negedge RST) begin
if(!RST) Q<=0;
else if(en) Q<=Q+1;
end
endmodule
再写一段逻辑保证你的D是边沿触发的就是了。
module counter(RST,CLK,D,Q);
input wire RST,CLK,D;
output [7:0]Q;
reg [7:0]Q;
reg en;
always @(negedge D or negedge RST) begin
if(!RST) en <= 1'b0;
else en <= 1'b1;
end
always @(posedge CLK or negedge RST) begin
if(!RST) Q<=0;
else if(en) Q<=Q+1;
end
endmodule
上海巴鲁图工程机械科技有限公司_
2022-05-15 广告
2022-05-15 广告
光电编码器,是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量的传感器。光电编码器每转输出60(我们用老板没有说)个脉冲,五线制。其中两根为电源线,三根为脉冲线(A相、B相、Z)。电源的工作电压为 (+5~+24V)直流电源。光...
点击进入详情页
本回答由上海巴鲁图工程机械科技有限公司_提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询