实验五Verilog设计组合电路.docx

上传人:b****6 文档编号:3345210 上传时间:2022-11-21 格式:DOCX 页数:19 大小:2.44MB
下载 相关 举报
实验五Verilog设计组合电路.docx_第1页
第1页 / 共19页
实验五Verilog设计组合电路.docx_第2页
第2页 / 共19页
实验五Verilog设计组合电路.docx_第3页
第3页 / 共19页
实验五Verilog设计组合电路.docx_第4页
第4页 / 共19页
实验五Verilog设计组合电路.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

实验五Verilog设计组合电路.docx

《实验五Verilog设计组合电路.docx》由会员分享,可在线阅读,更多相关《实验五Verilog设计组合电路.docx(19页珍藏版)》请在冰豆网上搜索。

实验五Verilog设计组合电路.docx

实验五Verilog设计组合电路

实验五Verilog设计组合电路

一、实验目的

1、学习非门、与门、与非门、或门、或非门、异或门和异或非门的VerilogHDL描述;

2、掌握基本组合逻辑电路的实现方法;

3、

进一步了解always语句的设计方法;

4、学习用case语句设计数据优先编码器/译码器的实现方法;

二、实验内容

1、参考教材4.4节,用Verilog HDL分别设计并仿真基本门电路1位全加器f_adder.v,基本门电路如下图所示。

(自己选择一种描述方式:

数据流描述方式、结构描述方式或行为描

述方式)

2、用Verilog HDL设计法设计并仿真8-3线优先编码器encode.v,其真值表如下表所示。

3、用Verilog语言编写3-8译码器的程序,符号如图所示,其中g1,g2a,g2b是使能控制输入端,当g1为高电平,g2a,g2b为低电平时,译码器工作,其他状态时,译码器被禁止工作,全部输出均为无效电平(高电平‘1’)。

 当CBA=000时,Y0N=0,其余为1;当CBA=001时,Y1N=0,其余为1;依此类推,文件命名为decoder3_8.v。

(选做)

三、实验步骤:

第一个实验:

1、打开QuartusII,新建一个工程f_adderyjq

 

2、新建一个Verilog HDL文件

3、输入程序(数据流方式):

modulef_adder1(a,b,cin,s,co);

inputa,b,cin;

outputs,co;

assigns=(a^b)^cin;

assignco=(a&b)|(cin&(a^b));

endmodule

4、设置顶层实体名(点settings>general>下拉选)

5、编译

6、新建一个Verilog HDL文件输入文件f_adder2.v

7、输入程序(结构描述方式):

modulef_adder2(a,b,cin,s,co);

inputa,b,cin;

outputs,co;

wires1,s2,s3;

xor(s1,a,b);

and(s2,s1,cin);

and(s3,a,b);

xor(s,cin,s1);

or(co,s2,s3);

endmodule

8、设置顶层实体名(点settings>general>下拉选)

9、编译

 

10、新建一个Verilog HDL文件输入文件f_adder3.v

 

11、输入程序(行为描述方式):

modulef_adder3(a,b,cin,s,co);

inputa,b,cin;

outputs,co;

regs,co;

always@({a,b,cin})

begin

case({a,b,cin})

'b000:

s=0;

'b001:

s=1;

'b010:

s=1;

'b011:

s=0;

'b100:

s=1;

'b101:

s=0;

'b110:

s=0;

'b111:

s=1;

endcase

case({a,b,cin})

'b000:

co=0;

'b001:

co=0;

'b010:

co=0;

'b011:

co=1;

'b100:

co=0;

'b101:

co=1;

'b110:

co=1;

'b111:

co=1;

endcase

end

endmodule

12、设置顶层实体名(点settings>general>下拉选)

 

13、编译

 

14、执行file>Create/Update>CreateSymbolFilesforCurrentFlie为VHDI设计文件生成原件符号

15、建立波形文件

8、导入引脚

9、仿真结果如下:

总结根据电路图分析可知:

abc

sco

0

0

0

0

0

0

0

1

1

0

0

1

0

1

0

0

1

1

0

1

1

0

0

1

0

1

0

1

0

1

1

1

0

0

1

1

1

1

1

1

与仿真的波形相符。

第二个实验:

1、打开QuartusII,新建一个工程encodeyjq

2、新建一个Verilog HDL文件输入文件encodeyjq.v

3、输入程序

moduleencode(y,a);

input[7:

0]a;

output[2:

0]y;

reg[2:

0]y;

always@(a)

begin

if(~a[7])y='b111;

elseif(~a[6])y='b110;

elseif(~a[5])y='b101;

elseif(~a[4])y='b100;

elseif(~a[3])y='b011;

elseif(~a[2])y='b010;

elseif(~a[1])y='b001;

elseif(~a[0])y='b000;

end

endmodule

 

4、设置顶层文件(点settings>general>下拉选)

5、编译

 

6、执行file>Create/Update>CreateSymbolFilesforCurrentFlie为VHDI设计文件生成原件符号

7、建立波形文件

8、导入引脚

9、仿真结果如下:

总结:

结果与图片相同,仿真正确。

第三个实验

1、打开QuartusII,新建一个工程decoderyjq

2、新建一个Verilog HDL文件输入文件decoderyjq.v

3、输入程序

moduledecoder(g1,g2a,g2b,A,B,C,y);

inputA,B,C,g1,g2a,g2b;

output[7:

0]y;

reg[7:

0]y;

always@(g1org2aorg2borAorBorC)

begin

if(g1!

=1|g2a!

=0|g2b!

=0)y='b11111111;

else

begin

case({C,B,A})

'b000:

y<='b11111110;

'b001:

y<='b11111101;

'b010:

y<='b11111011;

'b011:

y<='b11110111;

'b100:

y<='b11101111;

'b101:

y<='b11011111;

'b110:

y<='b10111111;

'b111:

y<='b01111111;

endcase

end

end

endmodule

4、设置顶层文件(点settings>general>下拉选)

5、编译

6、执行file>Create/Update>CreateSymbolFilesforCurrentFlie为VHDI设计文件生成原件符号

7、建立波形文件

8、导入引脚

9、仿真

仿真结果与实验要求相同,故仿真正确。

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

当前位置:首页 > 小学教育 > 英语

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

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