北邮电子院专业实验报告Word格式文档下载.doc

上传人:b****1 文档编号:13110023 上传时间:2022-10-05 格式:DOC 页数:35 大小:3.12MB
下载 相关 举报
北邮电子院专业实验报告Word格式文档下载.doc_第1页
第1页 / 共35页
北邮电子院专业实验报告Word格式文档下载.doc_第2页
第2页 / 共35页
北邮电子院专业实验报告Word格式文档下载.doc_第3页
第3页 / 共35页
北邮电子院专业实验报告Word格式文档下载.doc_第4页
第4页 / 共35页
北邮电子院专业实验报告Word格式文档下载.doc_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

北邮电子院专业实验报告Word格式文档下载.doc

《北邮电子院专业实验报告Word格式文档下载.doc》由会员分享,可在线阅读,更多相关《北邮电子院专业实验报告Word格式文档下载.doc(35页珍藏版)》请在冰豆网上搜索。

北邮电子院专业实验报告Word格式文档下载.doc

parametersize=1;

output[size-1:

0]out;

input[size-1:

0]b,a;

inputsel;

assignout=(!

sel)?

a:

(sel)?

b:

{size{1'

bx}};

endmodule

mux_test.v

`definewidth8

`timescale1ns/1ns

modulemux_test;

reg[`width:

1]a,b;

wire[`width:

1]out;

regsel;

scale_mux#(`width)m1(.out(out),.sel(sel),.b(b),.a(a));

initial

begin

$monitor($stime,,"

sel=%ba=%bb=%bout=%b"

sel,a,b,out);

$dumpvars(2,mux_test);

sel=0;

b={`width{1'

b0}};

a={`width{1'

b1}};

#5sel=0;

#5sel=1;

#5$finish;

end

四、仿真结果与波形

LAB2:

简单时序逻辑电路的设计

掌握基本时序逻辑电路的实现。

在VerilogHDL中,相对于组合逻辑电路,时序逻辑电路也有规定的表述方式。

在可综合的VerilogHDL模型中,我们常使用always块和@(posedgeclk)或@(negedgeclk)的结构来表述时序逻辑。

在always块中,被赋值的信号都必须定义为reg型,这是由时序逻辑电路的特点所决定的对于reg型数据,如果未对它进行赋值,仿真工具会认为它是不定态。

为了正确地观察到仿真结果,在可综合的模块中我们通常定义一个复位信号rst-,当它为低电平时对电路中的寄存器进行复位。

counter.v

`timescale1ns/100ps

modulecounter(cnt,clk,data,rst_,load);

output[4:

0]cnt;

input[4:

0]data;

inputclk;

inputrst_;

inputload;

reg[4:

0]cnt;

always@(posedgeclkornegedgerst_)

if(!

rst_)

#1.2cnt<

=0;

else

if(load)

cnt<

=#3data;

else

=#4cnt+1;

endmodule

counter_test.v

modulecounter_test;

wire[4:

reg[4:

regrst_;

regload;

regclk;

counterc1

.cnt(cnt),

.clk(clk),

.data(data),

.rst_(rst_),

.load(load)

);

initialbegin

clk=0;

foreverbegin

#10clk=1'

b1;

b0;

end

initial

begin

$timeformat(-9,1,"

ns"

9);

$monitor("

time=%t,data=%h,clk=%b,rst_=%b,load=%b,cnt=%b"

$stime,data,clk,rst_,load,cnt);

$dumpvars(2,counter_test);

taskexpect;

0]expects;

if(cnt!

==expects)begin

$display("

Attime%tcntis%bandshouldbe%b"

$time,cnt,expects);

TESTFAILED"

);

$finish;

endtask

@(negedgeclk)

{rst_,load,data}=7'

b0_X_XXXXX;

@(negedgeclk)expect(5'

h00);

{rst_,load,data}=7'

b1_1_11101;

h1D);

b1_0_11101;

repeat(5)@(negedgeclk);

expect(5'

h02);

b1_1_11111;

h1F);

$display("

TESTPASSED"

$finish;

五、思考题

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

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

所以是异步清零端。

LAB3:

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

八位寄存器中,每一位寄存器由一个二选一MUX和一个触发器dffr组成,当load=1,装载数据;

当load=0,寄存器保持。

对于处理重复的电路,可用数组条用的方式,使电路描述清晰、简洁。

clock.v

`timescale1ns/1ns

moduleclock(clk);

regclk;

outputclk;

initialbegin

clk=0;

foreverbegin

#10clk=1'

end

mux及dffr模块调用代码

muxmux7

(.out(n1[7]),

.sel(load),

.b(data[7]),

.a(out[7])

dffrdffr7

(.q(out[7]),

.d(n1[7]),

.clk(clk),

.rst_(rst_)

muxmux6

(.out(n1[6]),

.b(data[6]),

.a(out[6])

dffrdffr6

(.q(out[6]),

.d(n1[6]),

muxmux5

(.out(n1[5]),

.b(data[5]),

.a(out[5])

dffrdffr5

(.q(out[5]),

.d(n1[5]),

muxmux4

(.out(n1[4]),

.b(data[4]),

.a(out[4])

dffrdffr4

(.q(out[4]),

.d(n1[4]),

muxmux3

(.out(n1[3]),

.b(data[3]),

.a(out[3])

dffrdffr3

(.q(out[3]),

.d(n1[3]),

muxmux2

(.out(n1[2]),

.b(data[2]),

.a(out[2])

dffrdffr2

(.q(out[2]),

.d(n1[2]),

muxmux1

(.out(n1[1]),

.b(data[1]),

.a(out[1])

dffrdffr1

(.q(out[1]),

.d(n1[1]),

muxmux0

(.out(n1[0]),

.b(data[0]),

.a(out[0])

dffrdffr0

(.q(out[0]),

.d(n1[0]),

例化寄存器

registerr1

.data(data),

.out(out),

.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 临床医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1