一、门电路在线练习
1、与门
代码:
module top_module(
input a,
input b,
output out );
assign out=a&b;
endmodule
仿真结果
2、非门
代码:
module top_module( input in, output out );
assign out=~in;
endmodule
仿真结果
3、或非门
代码:
module top_module(
input a,
input b,
output out );
assign out=~(a|b);
endmodule
仿真结果
二、组合电路在线练习
1、2对1多路复用器
代码:
module top_module(
input a, b, sel,
output out );
assign out=(sel?b:a);
endmodule
仿真结果
2、全加法器
代码:
module top_module(
input a, b, cin,
output cout, sum );
assign {cout,sum}=a+b+cin;
endmodule
仿真结果
3、3变量
代码:
module top_module(
input a,
input b,
input c,
output out );
assign out=a|b|c;
endmodule
仿真结果
三、时序电路在线学习
1、D触发器
代码:
module top_module (
input clk, // Clocks are used in sequential circuits
input d,
output reg q );//
// Use a clocked always block
// copy d to q at every positive edge of clk
// Clocked always blocks should use non-blocking assignments
always @(posedge clk) begin
q<=d;
end
endmodule
仿真结果
2、四位二进制计数器
代码:
module top_module (
input clk,
input reset, // Synchronous active-high reset
output [3:0] q);
always@(posedge clk) begin
if (reset)
q<=4'b0000;
else
q<=q+1'b1;
end
endmodule
仿真结果
3、4位移位寄存器
代码:
module top_module(
input clk,
input areset, // async active-high reset to zero
input load,
input ena,
input [3:0] data,
output reg [3:0] q);
always @(posedge clk or posedge areset) begin
if (areset)
q<=4'b0;
else if (load)
q<=data;
else if (ena)
begin
q[3:0]<={1'b0,q[3:1]};
end
end
endmodule
仿真结果