时钟触发
module EdgeTriggeredFlipFlop (
input wire clk,
input wire data,
output reg q
);
// 时钟触发
always @(posedge clk)
q <= data;
endmodule
在上面的例子中,always @(posedge clk) 表示这个逻辑块在时钟信号的上升沿触发,即在每个时钟周期的上升沿执行一次。
时钟和复位触发
module ResettableCounter (
input wire clk,
input wire reset,
output reg [3:0] count
);
// 时钟和复位触发
always @(posedge clk or posedge reset)
begin
if (reset)
count <= 4'b0000;
else
count <= count + 1;
end
endmodule
在上面的例子中,always @(posedge clk or posedge reset) 表示这个逻辑块在时钟上升沿或复位信号上升沿触发。如果复位信号为高电平,则计数器被复位为零;否则,计数器每个时钟周期递增一次。
时钟和异步复位触发
module AsynchronousResetFlipFlop (
input wire clk,
input wire async_reset,
input wire data,
output reg q
);
// 时钟和异步复位触发
always @(posedge clk or posedge async_reset)
begin
if (async_reset)
q <= 1'b0;
else
q <= data;
end
endmodule
在上面的例子中,always @(posedge clk or posedge async_reset) 表示这个逻辑块在时钟上升沿或异步复位信号上升沿触发。如果异步复位信号为高电平,则输出被复位为零;否则,输出被设置为输入数据。
转载请注明出处:http://www.zyzy.cn/article/detail/11026/Verilog