verilog HDL实验复习代码Word文件下载.docx

上传人:b****4 文档编号:6632022 上传时间:2023-05-07 格式:DOCX 页数:17 大小:16.75KB
下载 相关 举报
verilog HDL实验复习代码Word文件下载.docx_第1页
第1页 / 共17页
verilog HDL实验复习代码Word文件下载.docx_第2页
第2页 / 共17页
verilog HDL实验复习代码Word文件下载.docx_第3页
第3页 / 共17页
verilog HDL实验复习代码Word文件下载.docx_第4页
第4页 / 共17页
verilog HDL实验复习代码Word文件下载.docx_第5页
第5页 / 共17页
verilog HDL实验复习代码Word文件下载.docx_第6页
第6页 / 共17页
verilog HDL实验复习代码Word文件下载.docx_第7页
第7页 / 共17页
verilog HDL实验复习代码Word文件下载.docx_第8页
第8页 / 共17页
verilog HDL实验复习代码Word文件下载.docx_第9页
第9页 / 共17页
verilog HDL实验复习代码Word文件下载.docx_第10页
第10页 / 共17页
verilog HDL实验复习代码Word文件下载.docx_第11页
第11页 / 共17页
verilog HDL实验复习代码Word文件下载.docx_第12页
第12页 / 共17页
verilog HDL实验复习代码Word文件下载.docx_第13页
第13页 / 共17页
verilog HDL实验复习代码Word文件下载.docx_第14页
第14页 / 共17页
verilog HDL实验复习代码Word文件下载.docx_第15页
第15页 / 共17页
verilog HDL实验复习代码Word文件下载.docx_第16页
第16页 / 共17页
verilog HDL实验复习代码Word文件下载.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

verilog HDL实验复习代码Word文件下载.docx

《verilog HDL实验复习代码Word文件下载.docx》由会员分享,可在线阅读,更多相关《verilog HDL实验复习代码Word文件下载.docx(17页珍藏版)》请在冰点文库上搜索。

verilog HDL实验复习代码Word文件下载.docx

assignout=s0?

(s1?

in4:

in3):

in2:

in1);

实验六 6选1数据选择器

moduletest6(out,in1,in2,in3,in4,in5,in6,s0,s1,s2);

inputin1,in2,in3,in4,in5,in6,s0,s1,s2;

outputregout;

always@(in1,in2,in3,in4,in5,in6,s0,s1,s2)

case({s0,s1,s2})

3'

b000:

out=in1;

b001:

out=in2;

b010:

out=in3;

b101:

out=in4;

b011:

out=in5;

b100:

out=in6;

default:

out=3'

bx;

endcase

endmodule

实验七3-8译码器(Assign) 

moduletest7(a,y,g1,g2a,g2b);

input[2:

0]a;

inputg1,g2a,g2b;

output[7:

0]y;

assigny=(g1&

&

!

g2a&

g2b)?

((a==3'

b000)?

8'

b1111_1110

:

(a==3'

b001)?

b1111_1101

b010)?

b1111_1011

b011)?

b1111_0111

b100)?

b1110_1111

b101)?

b1101_1111

b110)?

b1011_1111

b0111_1111)

b1111_1111;

实验八 3-8译码器(Always)

moduletest8(a,y,g1,g2a,g2b);

input[2:

outputreg[7:

always@(a,g1,g2a,g2b)

if(g1&

~g2a&

~g2b)

begincase(a)

y=8'

b1111_1110;

b1111_1101;

b1111_1011;

b1111_0111;

b1110_1111;

b1101_1111;

b110:

b1011_1111;

b111:

b0111_1111;

endcase

end

elsey=8'

 1.设计一个模10计数器(异步清零,同步置数)

modulecount_10(cout,qout,data,reset,clk,set);

inputreset,clk,set,data;

outputcout;

outputreg[3:

0]qout;

always@(posedgeclkornegedgereset)

begin

if(!

reset)qout<

=0;

elseif(set)qout<

elseif(qout<

=9)qout<

=qout+1;

elseqout<

assigncout=(qout==9)?

1:

0;

2.设计一个模60计数器(异步清零,同步置数)

modulecount60(qout,cout,data,load,reset,clk);

inputload,clk,reset;

input[7:

0]data;

elseif(load)qout<

elsebegin

if(qout[3:

0]==9)

beginqout[3:

0]<

if(qout[7:

4]==5)qout[7:

4]<

elseqout[7:

=qout[7:

4]+1;

elseqout[3:

=qout[3:

0]+1;

assigncout=(qout==8'

d59)?

 3.设计一个BCD码加法器(两个4bit)

moduleadda1(ina,inb,cin,cout,sum);

input[3:

0]ina,inb;

inputcin;

output[1:

0]cout;

output[3:

0]sum;

assign{cout,sum}=((ina+inb+cin)>

9)?

(ina+inb+cin+6):

(ina+inb+cin);

endmodule

4.设计一个4bit加减计数器

moduleaddjj(d,clk,clr,ld,updown,qd);

inputclk,clr,ld,updown;

0]d;

output[3:

0]qd;

reg[3:

0]cnt;

assignqd=cnt;

always@(posedgeclk)

clr)cnt<

=8'

h00;

elseif(ld)cnt<

elseif(updown)cnt<

=cnt+1;

elsecnt<

=cnt-1;

 5.设计一个2、4、8分频电路

modulefdiv248(clkin,clk1_1_2,clk2_1_4,clk3_1_8);

inputclkin;

outputregclk1_1_2,clk2_1_4,clk3_1_8;

always@(posedgeclkin)

clk1_1_2<

=~clk1_1_2;

always@(posedgeclk1_1_2)

clk2_1_4<

=~clk2_1_4;

always@(posedgeclk2_1_4)

clk3_1_8<

=~clk3_1_8;

6. 设计一个2N分频电路(N=7)

modulefdiv14(clkin,clk14);

outputclk14;

reg[3:

assignclk14=(cnt<

6)?

if(cnt<

13)cnt<

=cnt+4'

b1;

=4'

end

7.设计一个M+N分频器(N=5;

M=7)

modulefd5_7(clk,clk5_7);

inputclk;

outputclk5_7;

assignclk5_7=(cnt<

4)?

11)cnt<

  8.设计一个17分频器(占空比50%)01

modulefd17(clk,clk17,m,n);

outputclk17;

outputreg[4:

0]m,n;

assignclk17=((m<

8)?

0)|((n<

0);

if(m<

16)m<

=m+4'

elsem<

always@(negedgeclk)

if(n<

16)n<

=n+4'

elsen<

一位全加器的仿真

(1)VerylogHDL源代码

moduleadd1(ina,inb,cin,cout,sum);

inputina,inb,cin;

outputsum,cout;

assign{cout,sum}=ina+inb+cin;

(2)测试代码

`timescale1ns/1ns

moduleadd1_tb;

regina,inb,cin;

wirecout,sum;

add1u1(ina,inb,cin,cout,sum);

parameterdelay=100;

integeri;

initial

for(i=1;

i<

500;

i=i+1)

cin=0;

ina=0;

inb=0;

#delaycin=0;

ina=1;

inb=1;

#delaycin=1;

#delayina=0;

#delay;

二.4选1数据选择器

modulemux4_1(out,in1,in2,in3,in4,s0,s1);

inputin1,in2,in3,in4,s0,s1;

outputout;

assignout=s0?

modulemux4_1_tb;

regc0,c1,c2,c3;

regs0,s1;

wireout;

parameterdelay=100;

mux4_1u1(out,c0,c1,c2,c3,s0,s1);

initial

c0=0;

c1=0;

c2=0;

c3=0;

{s0,s1}=00;

#delayc0=1;

#delayc0=0;

c1=1;

{s0,s1}=01;

c2=1;

{s0,s1}=10;

c3=1;

{s0,s1}=11;

三.模60计数器的仿真

modulecount60(clk,clr,q_h,q_l,c);

inputclk,clr;

0]q_h,q_l;

outputregc;

always@(posedgeclkornegedgeclr)

begin

if(~clr)beginq_l<

c<

elseif(q_l<

9)beginq_l<

=q_l+1;

c=0;

elsebeginq_l<

=1;

always@(posedgecornegedgeclr)

if(~clr)beginq_h<

elseif(q_h<

5)beginq_h<

=q_h+1;

elsebeginq_h<

modulecount60_tb;

regclk,clr;

wire[3:

0]q_h,q_l;

wirec;

count60u1(clk,clr,q_h,q_l,c);

always#delayclk=~clk;

begin

clk=0;

clr=1;

#delayclr=0;

#123clr=1;

#(delay*1000)$stop;

initial$monitor($time,,,"

clk=%bclr=%bq_h=%dq_l=%dc=%b"

clk,clr,q_h,q_l,c);

四.模60BCD计数器的仿真

modulecount60_bcd_tb;

wire[7:

wirecout;

reg[7:

0]data;

regload,reset,clk;

count60u1(qout,cout,data,load,reset,clk);

initial

reset=1;

load=0;

data=0;

#delayreset=0;

#155reset=1;

#delayload=1;

data=20;

#(delay*2)load=0;

#(delay*500)$stop;

clk=%breset=%bload=%bdata=%dqout=%dcout=%b"

clk,reset,load,data,qout,cout);

五.4bit加减计数器的仿真

moduleadd_tb;

regclk,clr,ld,updown;

reg[3:

0]d;

addjju1(d,clk,clr,ld,updown,qd);

always#(delay/2)clk=~clk;

ld=0;

d=0;

updown=1;

#(delay*2)clr=0;

#187clr=1;

ld=1;

d=5;

#(delay*2)ld=0;

#(delay*20)updown=0;

#(delay*200)$stop;

clr=%bld=%bd=%dupdown=%bqd=%d"

clr,ld,d,updown,qd);

六.14分频器的仿真

modulefdiv_tb;

regclkin;

wireclk14;

fdiv14u1(clkin,clk14);

always#delayclkin=~clkin;

initial

clkin=0;

#(delay*500)$stop;

clkin=%bclk14=%b"

clkin,clk14);

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2