verilog编写的基本电路逻辑与仿真(3)

2019-04-14 22:04

集成电路与verilog语言实验报告

);

initial

clk = 1'b0; always #5 clk = ~clk; initial begin // Initialize Inputs nrst = 0; // Wait 100 ns for global reset to finish #30; // Add stimulus here nrst = 1; #500; #20$finish; end endmodule

仿真结果:

实验4题目:对一个400MHz的时钟分别完成2、4、8分频。

源代码:

module divclk(clkin,nrst,din, clkout);

input clkin; input nrst;

input [1:0] din; output clkout; reg [28:0] q; reg clkout; initial begin

q <=29'b0; end

always @(posedge clkin or negedge nrst) begin

if(~nrst)

q <= 29'b0;

第11页 共15页

集成电路与verilog语言实验报告

else

q <= q + 29'b1; end

always @(posedge clkin) begin

case(din) 2'b00:

clkout <= q[0]; 2'b01:

clkout <= q[1]; 2'b10:

clkout <= q[2]; default:

clkout <= 1'bz; endcase end

endmodule

综合结果: TB文件:

module tb_div;

// Inputs reg clkin; reg nrst;

reg [1:0] din; // Outputs wire clkout;

// Instantiate the Unit Under Test (UUT) divclk uut (

.clkin(clkin), .nrst(nrst), .din(din), .clkout(clkout) );

initial clkin = 1'b0; always

#1.25 clkin = ~clkin; initial begin

第12页 共15页

集成电路与verilog语言实验报告

// Initialize Inputs nrst = 0; din = 2'b11;

// Wait 100 ns for global reset to finish #50;

// Add stimulus here nrst = 1; din = 2'b00; #50;

din = 2'b01; #50;

din = 2'b10;

#50; din = 2'b11; #50; #20$finish; end endmodule

仿真结果: 实验5题目:按照病情严重程度将8名病人分配到8个病房,1号病房病情最轻,8号病房病人病情最严重。每个病房有一个按钮用于呼叫医生,在医生办公室有个显示屏,用于显示哪个病房按了按钮。由于病情不同,要求当病情较严重的病房按了按钮后,医生办公室的显示屏要优先显示其病房号。

源代码:

module priority_encoder(clk,I0,I1,I2,I3,I4,I5,I6,I7,Y);

input clk; input I0; input I1; input I2; input I3; input I4; input I5; input I6; input I7;

output [2:0] Y; reg [2:0] Y;

always @(posedge clk ) begin

if(I7)

第13页 共15页

集成电路与verilog语言实验报告

Y <= 3'b111; else if(I6)

Y <= 3'b110; else if(I5)

Y <= 3'b101; else if(I4)

Y <= 3'b100; else if(I3)

Y <= 3'b011; else if(I2)

Y <= 3'b010; else if(I1)

Y <= 3'b001; else if(I0)

Y <= 3'b000; else

Y <= 3'bz; end

endmodule

综合结果: TB文件: module tb2; // Inputs reg clk; reg I0; reg I1; reg I2; reg I3; reg I4; reg I5; reg I6; reg I7; // Outputs

第14页 共15页

集成电路与verilog语言实验报告

wire [2:0] Y;

// Instantiate the Unit Under Test (UUT) priority_encoder uut ( .clk(clk), .I0(I0), .I1(I1), .I2(I2), .I3(I3), .I4(I4), .I5(I5), .I6(I6), .I7(I7), .Y(Y) );

initial

clk = 1'b0; always

#2 clk = ~clk; initial begin

// Initialize Inputs I0 = 0; I1 = 0; I2 = 0; I3 = 0; I4 = 0; I5 = 0; I6 = 0; I7 = 0;

// Wait 100 ns for global reset to finish #10;

// Add stimulus here

{I7,I6,I5,I4,I3,I2,I1,I0} <= 8'b1110_1101; #10;

{I7,I6,I5,I4,I3,I2,I1,I0} <= 8'b0110_1011; #10;

{I7,I6,I5,I4,I3,I2,I1,I0} <= 8'b0011_0110; #10;

仿真结果:

第15页 共15页


verilog编写的基本电路逻辑与仿真(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:生物技术综合实验指导手册 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: