数字电子技术基础设计作业
图2实验一仿真波形图
(2)实验二:显示译码电路(HIT05108) Verilog程序:
module da2( input [2:0] s, output reg[7:0] dl
);
//s表示8种输入;dl控制8段数码管
always@(s) begin
case(s)
3'b000:dl=8'b10010001; 3'b001:dl=8'b11110111; 3'b010:dl=8'b11100001; 3'b011:dl=8'b10011111; 3'b100:dl=8'b00000011; 3'b101:dl=8'b01001001; 3'b110:dl=8'b00000011; 3'b111:dl=8'b00000001; endcase
6
//s输入为0,数码管显示H //s输入为1,数码管显示I //s输入为2,数码管显示T //s输入为3,数码管显示1 //s输入为4,数码管显示0 //s输入为5,数码管显示5 //s输入为6,数码管显示0 //s输入为7,数码管显示8
数字电子技术基础设计作业
end
endmodule
管脚约束文件:
NET \NET \NET \NET \NET \NET \NET \NET \NET \NET \NET \
仿真波形:
图3实验二仿真波形图
7
数字电子技术基础设计作业
(3)实验三:数字钟 Verilog程序:
//顶层模块
module clock_top(clk,duan,wei ); input clk; output[7:0] duan; output[3:0] wei; wire clk_1Hz,clk_190Hz; wire[15:0] disp;
clock_divf U1(.clk_50MHz(clk),.clk_1Hz(clk_1Hz),.clk_190Hz(clk_190Hz)); clock_time U2(.clk_1Hz(clk_1Hz),.time_MS(disp));
IP_smg_dsp U3(.clk_190Hz(clk_190Hz),.dat(disp),.duan(duan),.wei(wei)); endmodule
//分频模块,得到1Hz,用于秒计数;得到190Hz,用于控制数码管显示 //190Hz:这是4个数码管可以同时稳定显示的最低2n分频频率 module clock_divf(clk_50MHz,clk_1Hz,clk_190Hz); input clk_50MHz; output clk_190Hz; output reg clk_1Hz; reg[25:0] cnt;
assign clk_190Hz=cnt[17]; always@(posedge clk_50MHz) if(cnt==25000000) //实际项目用,1s变化1次
// if(cnt==250000)
//测试用,加快100倍分钟/秒的变化
begin
cnt=0;
8
数字电子技术基础设计作业
clk_1Hz=~clk_1Hz;
end
else cnt=cnt+1;
endmodule
//计时模块,得到分和秒
module clock_time(clk_1Hz,time_MS); input clk_1Hz; output[15:0] time_MS; reg[3:0] M_H,M_L,S_H,S_L; reg clk_SH,clk_ML,clk_MH;
assign time_MS={M_H,M_L,S_H,S_L}; always@(posedge clk_1Hz)begin
if(S_L==9)begin S_L=0; clk_SH=1;
end else begin S_L=S_L+1; clk_SH=0; end
end
always@(posedge clk_SH)begin if(S_H==5)begin S_H=0; clk_ML=1;
end else begin
S_H=S_H+1;
//时间:分、秒//秒:个位
//秒:十位
9
数字电子技术基础设计作业
clk_ML=0;
end
end
always@(posedge clk_ML)begin if(M_L==9)begin M_L=0; clk_MH=1;
end else begin M_L=M_L+1; clk_MH=0; end
end
always@(posedge clk_MH)begin if(M_H==5)M_H=0; else M_H=M_H+1;
end endmodule
//4个数字扫描显示模块
module IP_smg_dsp(clk_190Hz,dat,duan,wei); input clk_190Hz; input[15:0]dat; output reg[7:0]duan; output reg[3:0]wei; reg[3:0]disp; reg[1:0]smg_ctl;
always@(posedge clk_190Hz)begin
//分钟:个位
//分钟:十位
10
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新小学教育数电实验自主设计—哈工大 (2)全文阅读和word下载服务。
相关推荐: