找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1246|回复: 0
打印 上一主题 下一主题
收起左侧

数字逻辑实验指导

[复制链接]
跳转到指定楼层
楼主
ID:356122 发表于 2018-6-21 15:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
实验一:基本逻辑门实验

一、目的和要求
1、初步掌握FPGA的编程方法;
2、初步掌握verilogHDL语言的语法;
3、初步掌握Quartus II软件的用法;

二、实验内容
编写程序实现输入a,b,
输出out1为a与b,
输出out2为a或b,
输出out3为a异或b,
输出out4为a同或b,
输出out5为~a与~b,
输出out6为~a或~b;

三、实验步骤
1、安装Quartus II软件;
2、建立Quartus II工程;
3、编写verilogHDL程序;
4、查看生成的结果;

四、实验结论
(把生成的RTL视图画上)

五、附录
(写verilogHDL程序)



实验二:组合逻辑实验

一、目的和要求
1、进一步掌握verilogHDL语言的语法;
2、掌握verilog的组合逻辑编程方法;
3、初步掌握使用modelsim软件进行仿真测试的方法;

二、实验内容
编写verilog模块实现7段数码管译码器74ls48的功能;
编写verilog测试模块对功能模块进行测试;
对输出波形进行分析;
对照波形分析对功能模块进行修订;

三、实验步骤
1、在modelsim下建立工程;
2、编写功能模块程序;
3、编写测试模块程序;
4、运行仿真分析输出波形完善设计;

四、实验结论
(画出一段输出波形并分析是否正确)

五、附录
(写verilog的功能模块和测试模块程序)

module ex74ls48(d,y);

input [3:0] d;

output [6:0] y;

reg [6:0] y;

always @ (d)

begin

case (d)

4'b0000:y=7'b1111110;

4'b0001:y=7'b0110000;

4'b0010:y=7'b1101101;

4'b0011:y=7'b1111001;

4'b0100:y=7'b0110011;

4'b0101:y=7'b1011011;

4'b0110:y=7'b0011111;

4'b0111:y=7'b1110000;

4'b1000:y=7'b1111111;

4'b1001:y=7'b1110011;

default:y=7'b0000000;

endcase

end

endmodule



`timescale 1ns/1ns

module test74ls48;

reg [3:0] d;

wire [6:0] y;

initial

begin

d=0;

repeat(10)

#100 d=d+1;
#100 $stop;

end

ex74ls48 ex1(d,y);

initial $monitor($time,"   d=%d   y=%b",d,y);
endmodule

实验三:时序逻辑实验

一、目的和要求
1、进一步掌握verilogHDL语言的语法;
2、掌握verilog的时序逻辑编程方法;
3、掌握使用modelsim软件进行仿真测试的方法;

二、实验内容
编写verilog模块实现不带预置功能的十进制加法计数器功能;
编写verilog测试模块对功能模块进行测试;
对输出波形进行分析;
对照波形分析对功能模块进行修订;

三、实验步骤
1、在modelsim下建立工程;
2、编写功能模块程序;
3、编写测试模块程序;
4、运行仿真分析输出波形完善设计;

四、实验结论
(画出一段输出波形并分析是否正确)

五、附录
(写verilog的功能模块和测试模块程序)

module ex3(reset,clk,bcd,c);

input reset,clk;

output reg [3:0] bcd;

output reg c;

always @(posedge clk,negedge reset)

begin

if(!reset)

begin

bcd<=0;

c<=0;

end

else

if(bcd==9)

begin

bcd<=0;

c<=1;

end

else

begin

bcd<=bcd+1;

c<=0;

end

end
endmodule



`timescale 1ns/1ns
module ex3test;
reg clk,reset;
wire [3:0] bcd;
wire c;
always #50 clk<=~clk;
initial
begin
clk<=0;
reset<=1;
#50 reset<=0;
#50 reset<=1;
#2000 $finish;
end
ex3 ex1(reset,clk,bcd,c);
initial $monitor($time,"   bcd=%d  c=%d",bcd,c);
endmodule

实验四:电子时钟设计实验

一、目的和要求
1、掌握verilogHDL语言的语法;
2、掌握verilog编程的方法;
3、掌握使用modelsim软件进行仿真测试的方法;

二、实验内容
编写verilog模块实现带预置功能的具有时分秒计时能力的电子时钟设计;
编写verilog测试模块对功能模块进行测试;
对输出波形进行分析;
对照波形分析对功能模块进行修订;

三、实验步骤
1、在modelsim下建立工程;
2、编写功能模块程序;
3、编写测试模块程序;
4、运行仿真分析输出波形完善设计;

四、实验结论
(画出一段输出波形并分析是否正确)

五、附录
(写verilog的功能模块和测试模块程序)

module ex3(reset,set,clk,s0,s1);

input reset,clk,set;

input [16:0] s0;
output reg [16:0] s1;

always @(posedge clk,negedge reset,negedge set)

begin

if(!reset)

s1<=0;   
else

if(!set)

s1<=s0;   
else

if(s1[5:0]==59)

begin

s1[5:0]<=0;
if
(s1[11:6]==59)

begin
s1[11:6]<=0;
if
(s1[16:12]==23)

s1[16:12]<=0;
else
s1[16:12]<=s1[16:12]+1;
end
else         
s1[11:6]<=s1[11:6]+1;

end

else

s1[5:0]<=s1[5:0]+1;


end
endmodule




`timescale 1ns/1ns
module ex3test;
reg clk,reset,set;
reg [16:0] s0;
wire [16:0] s1;
always #50 clk<=~clk;
initial
begin
clk<=0;
reset<=1;
set<=1;
#50 reset<=0;
#50 reset<=1;
#10000 s0[16:12]<=20;s0[11:6]<=30;s0[5:0]<=40;
#50 set<=0;
#50 set<=1;
#10000 s0[16:12]<=23;s0[11:6]<=58;s0[5:0]<=50;
#50 set<=0;
#50 set<=1;
#20000 $finish;
end
ex3 ex1(reset,set,clk,s0,s1);
initial $monitor($time,"   s0=%d:%d:%d  s1=%d:%d:%d",s0[16:12],s0[11:6],s0[5:0],s1[16:12],s1[11:6],s1[5:0]);
endmodule

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表