EDA实验(7)

2019-02-15 19:11

//时钟分频进程,用于数码管扫描显示 always @(posedge clock) begin

count <= count + 1'b1; end

assign div_clk = &count;

//数码管扫描显示部分

always @(posedge clock) begin

if(div_clk) cnt <= cnt + 1'b1; end

always @(posedge clock) begin

if(div_clk) begin case(cnt) 2'd0:disp_dat <= acount[7:4]; 2'd1:disp_dat <= acount[3:0]; 2'd2:disp_dat <= bcount[7:4]; 2'd3:disp_dat <= bcount[3:0]; endcase case(cnt) 2'd0:dig <= 8'b01111111; 2'd1:dig <= 8'b10111111; 2'd2:dig <= 8'b11110111; 2'd3:dig <= 8'b11111011; endcase end end

always @(disp_dat) begin

case(disp_dat) 4'h0:seg = 8'hc0; //显示0 4'h1:seg = 8'hf9; //显示1 4'h2:seg = 8'ha4; //显示2 4'h3:seg = 8'hb0; //显示3 4'h4:seg = 8'h99; //显示4 4'h5:seg = 8'h92; //显示5 4'h6:seg = 8'h82; //显示6 4'h7:seg = 8'hf8; //显示7

4'h8:seg = 8'h80; //显示8 4'h9:seg = 8'h90; //显示9 4'ha:seg = 8'h88; //显示a 4'hb:seg = 8'h83; //显示b 4'hc:seg = 8'hc6; //显示c 4'hd:seg = 8'ha1; //显示d 4'he:seg = 8'h86; //显示e 4'hf:seg = 8'h8e; //显示f endcase end

endmodule

(3) traffic_top.v(顶层文件)

module traffic_top(clk,rst_n,seg,dig,lampa,lampb); input clk; input rst_n; output [2:0] lampa; output [2:0] lampb; output [7:0] seg; output [7:0] dig;

wire clken;

wire [7:0] acount; wire [7:0] bcount;

traffic traffic( .clock(clk), .rst_n(rst_n), .clken(clken), .lampa(lampa), .lampb(lampb), .acount(acount), .bcount(bcount) );

traffic_test traffic_test( .clock(clk), .clken(clken), .rst_n(rst_n), .acount(acount), .bcount(bcount), .seg(seg),

//系统时钟(48MHz) //复位信号,低电平有效

.dig(dig) );

Endmodule

实验八 数字时钟

1、实验目的

学习数字时钟的硬件设计。 2、实验内容

在实验平台上完成一个可以计时的数字时钟,其显示时间范围是 00:00:00~23:59:59,且该时钟具有暂停计时和清零等功能。 3 、实验原理

一个完整的时钟应由 3 部分组成:秒脉冲发生电路、计数显示部分和时钟调整部分。一个时钟的准确与否主要取决秒脉冲的精确度。为了保证计时准确我们对系统时钟 50MHZ 进行了 50000000 分频,从而得到 1HZ 的秒脉冲。至于显示部分与 LED 数码管原理相同,而校时电路用户可以自由发挥,如定义 3 个键keystart、keymon 和 keyadd,分别用于控制时钟的计时开始、调整功能选择和加 1 处理,从而完成对现 在时间的调整。本实验的较时电路在此仅仅完成了暂停、清零等基本功能。 4、电路连接

(1)将EDA-MK-01模块跳线帽设置为SEG_a—SEG_dp和COM0—COM7端。

(2) 用实验仪提供的 8PIN 数据线将 IO 口三和四(J33和J34)分别与数码管的

J28、J27相连接。 (3)引脚分配 PIN_23 -to clk PIN_120 -to key\\[0\\] PIN_119 -to key\\[1\\] PIN_74 -to seg\\[0\\] PIN_72 -to seg\\[1\\] PIN_69 -to seg\\[2\\] PIN_68 -to seg\\[3\\] t PIN_67 -to seg\\[4\\] PIN_64 -to seg\\[5\\] PIN_63 -to seg\\[6\\] PIN_61 -to seg\\[7\\] PIN_86 -to dig\\[0\\] PIN_84 -to dig\\[1\\] PIN_82 -to dig\\[2\\] PIN_81 -to dig\\[3\\] PIN_80 -to dig\\[4\\] PIN_77 -to dig\\[5\\] PIN_76 -to dig\\[6\\] PIN_75 -to dig\\[7\\]

(4) 把程序下载到 FPGA 器件中。观察数码管的显示状态。按下按键 K3、K2 观察数

字钟上的时间有什么变化。

5、实验程序

module clock(clk,key,dig,seg); input clk; input[1:0] key; output[7:0] dig;

output[7:0] seg;

reg[7:0] seg_r; reg[7:0] dig_r; reg[3:0] disp_dat; reg[24:0]count; reg[23:0]hour; reg sec,keyen; reg[1:0]dout1,dout2,dout3; wire[1:0]key_done;

assign dig = dig_r; assign seg = seg_r;

//秒信号产生部分

always @(posedge clk) begin count = count + 1'b1; if(count == 25'd25000000) begin count = 25'd0; sec = ~sec; end end

//按键消抖处理部分

assign key_done = (dout1 | dout2 | dout3);

always @(posedge count[17]) begin dout1 <= key; dout2 <= dout1; dout3 <= dout2; end

always @(negedge key_done[0]) begin keyen = ~keyen; end

//数码管动态扫描显示部分 always @(posedge clk) begin case(count[17:15])


EDA实验(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:北京理工大学自动控制理论04-08真题及解析

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: