北邮电子院专业实验报告 下载本文

.clk (clk), .data(data), .rst_(rst_), .load(load) );

initial begin clk=0;

forever begin #10 clk=1'b1; #10 clk=1'b0; end end

initial begin

$timeformat(-9,1,\

$monitor(\ $stime,data,clk,rst_,load,cnt); $dumpvars(2,counter_test); end task expect;

input [4:0]expects;

if(cnt !==expects)begin

$display(\ $time,cnt,expects); $display(\ $finish; end endtask initial begin

@(negedge clk)

{rst_,load,data}=7'b0_X_XXXXX;@(negedge clk)expect(5'h00); {rst_,load,data}=7'b1_1_11101;@(negedge clk)expect(5'h1D); {rst_,load,data}=7'b1_0_11101; repeat(5)@(negedge clk); expect(5'h02);

{rst_,load,data}=7'b1_1_11111;@(negedge clk)expect(5'h1F); {rst_,load,data}=7'b0_X_XXXXX;@(negedge clk)expect(5'h00); $display(\ $finish; end endmodule

四、 仿真结果与波形

五、

思考题

该电路中,rst-是同步还是异步清零端?

在counter.v的always块中reset没有等时钟,而是直接清零。所以是异步清零端。

LAB 3:简单时序逻辑电路的设计

一、 二、

实验目的 实验原理

使用预定义的库元件来设计八位寄存器。

八位寄存器中,每一位寄存器由一个二选一MUX和一个触发器dffr组成,当load=1,装载数据;当load=0,寄存器保持。对于处理重复的电路,可用数组条用的方式,使电路描述清晰、简洁。

三、 源代码

clock.v

`timescale 1 ns /1 ns module clock(clk);

reg clk; output clk; initial begin clk=0;

forever begin #10 clk=1'b1; #10 clk=1'b0; end end endmodule

mux及dffr模块调用代码

mux mux7 (.out(n1[7]), .sel(load), .b(data[7]), .a(out[7]) );

dffr dffr7 (.q(out[7]), .d(n1[7]), .clk(clk), .rst_(rst_) );

mux mux6 (.out(n1[6]), .sel(load), .b(data[6]), .a(out[6]) );

dffr dffr6 (.q(out[6]),

.d(n1[6]), .clk(clk), .rst_(rst_) );

mux mux5 (.out(n1[5]), .sel(load), .b(data[5]), .a(out[5]) );

dffr dffr5 (.q(out[5]), .d(n1[5]), .clk(clk), .rst_(rst_) );

mux mux4 (.out(n1[4]), .sel(load), .b(data[4]), .a(out[4]) );

dffr dffr4 (.q(out[4]), .d(n1[4]), .clk(clk), .rst_(rst_) );

mux mux3 (.out(n1[3]), .sel(load), .b(data[3]), .a(out[3]) );

dffr dffr3 (.q(out[3]), .d(n1[3]), .clk(clk), .rst_(rst_) );

mux mux2 (.out(n1[2]), .sel(load),