quarterii4位数码管显示实验.docx

上传人:b****7 文档编号:8747943 上传时间:2023-02-01 格式:DOCX 页数:12 大小:166.08KB
下载 相关 举报
quarterii4位数码管显示实验.docx_第1页
第1页 / 共12页
quarterii4位数码管显示实验.docx_第2页
第2页 / 共12页
quarterii4位数码管显示实验.docx_第3页
第3页 / 共12页
quarterii4位数码管显示实验.docx_第4页
第4页 / 共12页
quarterii4位数码管显示实验.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

quarterii4位数码管显示实验.docx

《quarterii4位数码管显示实验.docx》由会员分享,可在线阅读,更多相关《quarterii4位数码管显示实验.docx(12页珍藏版)》请在冰豆网上搜索。

quarterii4位数码管显示实验.docx

quarterii4位数码管显示实验

quarter-ii-4位数码管显示实验

贵州大学实验报告

学院:

电气工程学院专业:

测控技术与仪器班级:

测仪131

姓名

学号

实验组

实验时间

2016.12.2

指导教师

成绩

实验项目名称

4位数码管显示实验

实验目的

通过利用硬件设计语言veriloag设计4位数码管显示电路、理解QuartusII平台进行硬件开发的方法、深入理解verilog语言及其设计方法。

实验要求

集中授课

实验原理

原理框图如下图4-1所示

FPGA控制数码管的动态扫描,采集数据和地址总线的数据,使能不同位的数码管,并将采集到的数据依次传送给段选译码模块,最后输出对应数字的段码,控制数码管显示对应总线的数据。

图4-1原理框图

实验仪器

PC机、QuartusII软件、KeilμVision2软件

实验步骤

1、首先,制作1位数码管显示电路,用verilong语言写。

moduleseg7(clk,rst_n,data,seg,sel);

inputclk;

inputrst_n;

input[3:

0]data;

outputreg[7:

0]seg;

outputreg[2:

0]sel;

always@(posedgeclkornegedgerst_n)

begin

if(!

rst_n)

begin

sel<=0;

end

else

begin

sel<=0;

end

end

always@(*)

begin

if(!

rst_n)

begin

seg=8'b1111_1111;

end

else

begin

case(data)

0:

seg=8'b1100_0000;

1:

seg=8'b1111_1001;

2:

seg=8'b1010_0100;

3:

seg=8'b1011_0000;

4:

seg=8'b1001_1001;

5:

seg=8'b1001_0010;

6:

seg=8'b1000_0010;

7:

seg=8'b1111_1000;

8:

seg=8'b1000_0000;

9:

seg=8'b1001_0000;

10:

seg=8'b1000_1000;

11:

seg=8'b1000_0011;

12:

seg=8'b1100_0110;

13:

seg=8'b1010_0001;

14:

seg=8'b1000_0110;

15:

seg=8'b1000_1110;

default:

seg=8'b1111_1111;

endcase

end

end

endmodule

 

测试模块

`timescale1ns/1ps

moduleseg7_tb;

regclk;

reg[3:

0]data;

regrst_n;

wire[7:

0]seg;

wire[2:

0]sel;

initial

begin

clk=1;

rst_n=0;

data=10;

#200.1

rst_n=1;

end

always#10clk=~clk;

seg7seg7(

.clk(clk),

.rst_n(rst_n),

.data(data),

.seg(seg),

.sel(sel)

);

Endmodule

2、例化元件

3、4位数码管的设计

Frep模块

modulefreq(

clk,

rst_n,

clk_1k

);

inputclk;

inputrst_n;

outputregclk_1k;

reg[19:

0]count;

always@(posedgeclkornegedgerst_n)

begin

if(!

rst_n)

begin

clk_1k<=1;

count<=0;

end

else

begin

if(count<24999)

count<=count+1;

else

begin

count<=0;

clk_1k<=~clk_1k;

end

end

end

endmodule

Seg7模块

moduleSEG7(

clk,

rst_n,

data,

seg,

sel

);

inputclk;

inputrst_n;

input[15:

0]data;

outputreg[7:

0]seg;

outputreg[2:

0]sel;

reg[3:

0]data_temp;

reg[2:

0]state;

always@(posedgeclkornegedgerst_n)

begin

if(!

rst_n)

begin

sel<=0;

data_temp<=0;

state<=0;

end

else

begin

case(state)

0:

begin

sel<=0;

data_temp<=data[15:

12];

state<=1;

end

1:

begin

sel<=1;

data_temp<=data[11:

8];

state<=2;

end

2:

begin

sel<=2;

data_temp<=data[7:

4];

state<=3;

end

3:

begin

sel<=4;

data_temp<=data[3:

0];

state<=4;

end

default:

state<=0;

endcase

end

end

always@(*)

begin

if(!

rst_n)

begin

seg=8'b1111_1111;

end

else

begin

case(data_temp)

0:

seg=8'b1100_0000;

1:

seg=8'b1111_1001;

2:

seg=8'b1010_0100;

3:

seg=8'b1011_0000;

4:

seg=8'b1001_1001;

5:

seg=8'b1001_0010;

6:

seg=8'b1000_0010;

7:

seg=8'b1111_1000;

8:

seg=8'b1000_0000;

9:

seg=8'b1001_0000;

10:

seg=8'b1000_1000;

11:

seg=8'b1000_0011;

12:

seg=8'b1100_0110;

13:

seg=8'b1010_0001;

14:

seg=8'b1000_0110;

15:

seg=8'b1000_1110;

default:

seg=8'b1111_1111;

endcase

end

end

endmodule

Top模块

moduletop(

clk,

rst_n,

data,

seg,

sel

);

inputclk;

inputrst_n;

input[15:

0]data;

output[7:

0]seg;

output[2:

0]sel;

wireclk_1k;

freqfreq(

.clk(clk),

.rst_n(rst_n),

.clk_1k(clk_1k)

);

SEG7SEG7(

.clk(clk_1k),

.rst_n(rst_n),

.data(data),

.seg(seg),

.sel(sel)

);

endmodule

测试模块

`timescale1ns/1ps

moduletop_vlg_tst();

//constants

//generalpurposeregisters

regeachvec;

//testvectorinputregisters

regclk;

reg[15:

0]data;

regrst_n;

//wires

wire[7:

0]seg;

wire[2:

0]sel;

//assignstatements(ifany)

toptop(

//portmap-connectionbetweenmasterportsandsignals/registers

.clk(clk),

.data(data),

.rst_n(rst_n),

.seg(seg),

.sel(sel)

);

initial

begin

clk=1;

rst_n=0;

data=15h123456;

#200.1

rst_n=1;

end

always#10clk=~clk;

endmodule

4、4位数码管的例化

实验内容

设计一个4位数码管显示电路:

要求在QuartusII软件平台上用verilog语言设计出一个4位数码管显示电路,并通过编译及仿真检查设计结果。

实验数据

一位数码管的仿真图像

4位数码管的仿真

实验总结

由于初次用到modelsim仿真软件,在使用过程中出现了很多问题,有的问老师和师兄,还有一部分只能通过网络上进行查询,所以花费的时间就很多,做起来难度很大,但是通过这次的学习我也学到了很多东西,多动手多动脑才能更好的学习。

指导教师意见

 

签名:

年月日

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

当前位置:首页 > 高等教育 > 教育学

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

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