一.电路相关练习
门电路相关练习
(1)非门
代码
// A code block
var foo = 'bar';
module top_module( input in, output out );
assign out=~in;
endmodule
结果
(2)与门
代码
// A code block
var foo = 'bar';
module top_module(
input a,
input b,
output out );
assign out=a&b;
endmodule
结果
(3)或非门
代码
// A code block
var foo = 'bar';
module top_module(
input a,
input b,
output out );
assign out=~(a|b);
endmodule
二.逻辑相关练习
1.组合逻辑
(1)Mux2to1 2到1多路复用器
代码
// A code block
var foo = 'bar';
module top_module(
input a, b, sel,
output out );
assign out = (sel) ? b : a;
endmodule
结果:
(2)完整加法器
加法器是产生数的和的装置。加数和被加数为输入,和数与进位为输出的装置为半加器。
代码
// A code block
var foo = 'bar';
module top_module(
input a, b, cin,
output cout, sum );
assign{cout,sum} = a + b + cin;
endmodule
结果
(3)卡诺地图
代码块
// A code block
var foo = 'bar';
module top_module (
input [4:1] x,
output f );
assign f = (~x[1] & x[3]) | (x[1] & x[2] & ~x[3]);
endmodule
结果:
2.顺序逻辑
(1)D翻转
代码
// A code block
var foo = 'bar';
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)D闩锁
代码
// A code block
var foo = 'bar';
module top_module (
input d,
input ena,
output q);
always@(*)begin
if(ena)begin
q<=d;
end
end
endmodule