EDA设计课程实验报告数码管动态显示实验报告Word格式.docx

上传人:b****8 文档编号:22821220 上传时间:2023-02-05 格式:DOCX 页数:15 大小:204.21KB
下载 相关 举报
EDA设计课程实验报告数码管动态显示实验报告Word格式.docx_第1页
第1页 / 共15页
EDA设计课程实验报告数码管动态显示实验报告Word格式.docx_第2页
第2页 / 共15页
EDA设计课程实验报告数码管动态显示实验报告Word格式.docx_第3页
第3页 / 共15页
EDA设计课程实验报告数码管动态显示实验报告Word格式.docx_第4页
第4页 / 共15页
EDA设计课程实验报告数码管动态显示实验报告Word格式.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

EDA设计课程实验报告数码管动态显示实验报告Word格式.docx

《EDA设计课程实验报告数码管动态显示实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《EDA设计课程实验报告数码管动态显示实验报告Word格式.docx(15页珍藏版)》请在冰豆网上搜索。

EDA设计课程实验报告数码管动态显示实验报告Word格式.docx

01111111

C0

10111111

F9

11011111

11101111

80

11110111

11111011

11111101

A4

11111110

注:

数码管显示为01180121

(3)算法流程图(见图2)

N

Y

7

6

5

4

3

2

1

Start

clk↑?

dig=10111111

dig=11011111

dig=11101111

dig=11110111

dig=11111011

dig=11111101

dig=11111110

dig=01111111

count=?

seg=c0

seg=f9

seg=80

seg=a4

count=count+1

图2

(4)Verilog源代码

modulescan_led(clk_1k,d,dig,seg);

//模块名scan_led

inputclk_1k;

//输入时钟

input[31:

0]d;

//输入要显示的数据

output[7:

0]dig;

//数码管选择输出引脚

0]seg;

//数码管段输出引脚

reg[7:

0]seg_r;

//定义数码管输出寄存器

0]dig_r;

//定义数码管选择输出寄存器

reg[3:

0]disp_dat;

//定义显示数据寄存器

reg[2:

0]count;

//定义计数寄存器

assigndig=dig_r;

//输出数码管选择

assignseg=seg_r;

//输出数码管译码结果

always@(posedgeclk_1k)//定义上升沿触发进程

begin

count<

=count+1'

b1;

end

always@(posedgeclk_1k)

case(count)//选择扫描显示数据

3'

d0:

disp_dat=d[31:

28];

//第一个数码管

d1:

disp_dat=d[27:

24];

//第二个数码管

d2:

disp_dat=d[23:

20];

//第三个数码管

d3:

disp_dat=d[19:

16];

//第四个数码管

d4:

disp_dat=d[15:

12];

//第五个数码管

d5:

disp_dat=d[11:

8];

//第六个数码管

d6:

disp_dat=d[7:

4];

//第七个数码管

d7:

disp_dat=d[3:

0];

//第八个数码管

endcase

case(count)//选择数码管显示位

dig_r=8'

b01111111;

//选择第一个数码管显示

b10111111;

//选择第二个数码管显示

b11011111;

//选择第三个数码管显示

b11101111;

//选择第四个数码管显示

b11110111;

//选择第五个数码管显示

b11111011;

//选择第六个数码管显示

b11111101;

//选择第七个数码管显示

b11111110;

//选择第八个数码管显示

endcase

always@(disp_dat)

case(disp_dat)//七段译码

4'

h0:

seg_r=8'

hc0;

//显示0

h1:

hf9;

//显示1

h2:

ha4;

//显示2

h3:

hb0;

//显示3

h4:

h99;

//显示4

h5:

h92;

//显示5

h6:

h82;

//显示6

h7:

hf8;

//显示7

h8:

h80;

//显示8

h9:

h90;

//显示9

ha:

h88;

//显示a

hb:

h83;

//显示b

hc:

hc6;

//显示c

hd:

ha1;

//显示d

he:

h86;

//显示e

hf:

h8e;

//显示f

endmodule

四、系统调试

(1)仿真代码

`timescale1ns/1ns

modulescan_ledfz;

regclk_1k;

reg[31:

wire[7:

wire[7:

parameterdely=100;

scan_ledu1(clk_1k,d,dig,seg);

always#(dely/2)

clk_1k=~clk_1k;

initialbegin

clk_1k=0;

d=32'

h01180134;

#dely;

#(dely*20);

#dely$finish;

initial$monitor($time,,,"

%b,%d,%h,%h"

clk_1k,d,dig,seg);

0]count=3'

b000;

always@(posedgeclk_1k)//定义上升沿触发进程

位码代码仿真代码

`timescale1ns/1ns

modulesmg_tp;

//测试模块的名字

reg[2:

0]c;

//测试输入信号定义为reg型

//测试输出信号定义为wire型

parameterDELY=100;

//延时100秒

weiu1(c,dig);

//调用测试对象

initialbegin//激励波形设定

c=3'

b0;

#DELYc=3'

b001;

b010;

b100;

b101;

b110;

b111;

#DELY$finish;

end

initial$monitor($time,,,"

dig=%d,c=%b"

dig,c);

//输出格式i定义

endmodule

modulewei(c,dig);

//命名模块名字

input[2:

output[7:

//定义输入与输出

reg[7:

reg[2:

0]c_r;

//定义dig_r与c_r2个reg型数据

assigndig=dig_r;

//将reg型数据转化为wire型数据

always@(*)//检测c_r的数据是否变化

beginc_r=c;

case(c_r)

3'

b000:

dig_r=8'

//c_r的数据变化而dig_r对于的数据变化

b001:

b010:

b011:

b100:

b101:

b110:

b111:

default:

dig_r=8'

b11111111;

endcase//结束case语句

end//结束always语句

endmodule//结束程序

译码器代码仿真代码

moduleduan_tp;

reg[3:

0]a;

duanu1(a,seg);

a=4'

#DELYa=4'

b0001;

b0010;

b0011;

b0100;

b0101;

b0110;

b0111;

b1000;

b1001;

b1010;

b1011;

b1100;

b1101;

b1110;

b1111;

seg=%d,a=%b"

seg,a);

endmodule

moduleduan(a,seg);

input[3:

0]a_r;

//定义seg_r与a_r2个reg型数据

assignseg=seg_r;

begina_r=a;

case(a_r)//七段译码

b0000:

b0001:

b0010:

b0011:

b0100:

b0101:

b0110:

b0111:

b1000:

///显示8

b1001:

b1010:

b1011:

b1100:

b1101:

b1110:

b1111:

///显示f

(2)仿真波形图

(3)引脚图

五、实验感想

通过这次实验,让我学习动态扫描显示的原理;

这个实验的结构电路是属于多层次结构电路,要把系统分为好几个模块,每个模块再分成几个子模块。

所以这次的实验对我们又是一个锻炼,掌握它之后,又让我对EDA有了新的知识的渴望。

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

当前位置:首页 > 表格模板 > 调查报告

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

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