集成电路与Verilog语言
集成电路与verilog语言实验报告
实验1:分别用门级建模、数据流级建模、和行为级建模实现一个2选1的MUX,两个输入端分别为A和B,当选择端SEL=0时,输出F选择A;当选择端SEL=1时,输出F选择B。 A SEL B 门级建模: 源代码:
//MUX2to1 gatelevel
module MUX_gate(a,b,sel,f); input a; input b; input sel; output f; reg f;
wire nsel,y1,y2; not unot(nsel,sel); and u1and(y1,a,nsel); and u2and(y2,b,sel); or uor(f,y1,y2); endmodule
综合结果: TB代码:
module tb_MUX_gate; // Inputs reg a; reg b; reg sel;
第2页 共15页
集成电路与verilog语言实验报告
// Outputs wire f;
// Instantiate the Unit Under Test (UUT) MUX_gate uut ( .a(a), .b(b), .sel(sel), .f(f) );
initial begin
// Initialize Inputs a = 0; b = 0; sel = 0;
// Wait 100 ns for global reset to finish #10
// Add stimulus here a=1; b=0; sel=0; #10; a=1; b=0; sel=1; #10;
#10$finish; end endmodule
仿真结果: 数据流级建模: 源代码:
//MUX2to1 datapro
module MUX_datapro(a,b,sel,f);
input a; input b; input sel; output f;
reg f;
wire nsel,y1,y2; assign nsel=~sel; assign y1=a&nsel; assign y2=b&sel;
第3页 共15页
集成电路与verilog语言实验报告
assign f=y1|y2; endmodule
综合结果: TB代码:
module tb_MUX_datarpro; // Inputs reg a; reg b; reg sel; // Outputs wire f;
// Instantiate the Unit Under Test (UUT) MUX_datapro uut ( .a(a), .b(b), .sel(sel), .f(f) );
initial begin
// Initialize Inputs a = 0; b = 0; sel = 0;
// Wait 100 ns for global reset to finish #10;
// Add stimulus here a=1; b=0; sel=0; #10; a=1; b=0; sel=1; #10;
#10$finish; en endmodule
第4页 共15页
集成电路与verilog语言实验报告
仿真结果: 行为级建模: 源代码:
//MUX2to1 behav
module MUX_behav(f,a,b,sel); input a,b,sel; output f; reg f;
reg y1,y2,nsel;
always @(a or b or sel) begin
nsel <=~sel; y1 <= a&nsel; y2 <= b&sel; f <= y1|y2; end
endmodule
综合结果: TB代码:
module tb_MUX_behav; // Inputs reg a; reg b; reg sel; // Outputs wire f;
// Instantiate the Unit Under Test (UUT) MUX_behav uut ( .a(a), .b(b), .sel(sel),
第5页 共15页