下面为某可变计数器的Verilog HDL代码,当A=1时,为7进制;当A=0时,为9进制。试补充完空白处代码。 module Alterable_Counter(A, clk, Q); input clk, A; output reg [3:0] Q; parameter N=7; parameter M=9; always @(posedge clk) begin if(A) begin if (__________) begin Q<=0; end else begin Q<=_______; end end else begin if (___________) begin Q<=0; end else begin Q<=Q+1; end end end endmodule
举一反三
- 关于以下分频器程序中,clk为系统时钟,则该分频器的分频数是多少?输出信号的占空比是多少?always@ (posedge clk) begin if (divider==M) begin carry<=1; divider<=P; end else begin divider<=divider+1; carry<=0; end end
- 下面程序功能是一个具有同步置1,异步清零0的D触发器。端口说明[br][/br] RST:异步清零CLK:时钟输入,SET:同步置1,EN:同步使能,D:数据输入,Q:数据输出。将横线上的语句补上,使程序形成完整功能。 module e5_3(RST,CLK,SET,EN,D,Q); input RST,CLK,SET,EN,D; ① reg Q; always@(②) begin if(③ ) Q<=0; else if(EN) begin if(④) Q<=1; else Q<=D; end end endmodule
- 以下程序中,clk_50M为50MHz输入时钟,若想输出clk为2Hz的方波,则cnt的判断条件设置为多少?() always@(posedge clk_50M) begin if (cnt == ? ) begin clk2_hz = 1'b1; cnt = 0; end else begin cnt = cnt + 1; clk2_hz = 1'b0; end end always@(posedge clk2_hz) clk =~ clk;
- 针对该程序下述描述正确的是PROCESS(clk,rst) BEGIN IF(rst='0') THEN q<="0000"; ELSIF(clk'event AND clk='1') THEN q<=q-1; END IF;END PROCESS; A: 上述都不准确 B: clk'event AND clk='1'表示下降沿 C: clk上升沿计数加1 D: rst为0时实现异步清零
- begin PrevPwm <= PwmControl if (PwmControl != PrevPwm) begin DeadTimeCounter <= DeadTime; if (PwmControl) PwmLreg <= 0; else PwmHreg <= 0; end else if (DeadTimeCounter != 0) DeadTimeCounter <= DeadTimeCounter - 1; else begin if (PwmControl) PwmHreg <= 1; else PwmLreg <= 1; end end A: 载波比较 B: 生成死区时间 C: 生成三角波信号 D: 生成正弦调制波