1 / 11
文档名称:

大规模数字逻辑课程设计-流水灯设计.doc

格式:doc   页数:11页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

大规模数字逻辑课程设计-流水灯设计.doc

上传人:3346389411 2013/2/1 文件大小:0 KB

下载得到文件列表

大规模数字逻辑课程设计-流水灯设计.doc

文档介绍

文档介绍:大规模数字逻辑课程设计
题目:流水灯设计
学号: XXX
姓名: XXX
班级: XXX

目录
1. 流水灯控制的实验要求与思路 3
3
3
2. 系统逻辑设计: 4
4
(1)分频器部分 4
(2)控制模块 5
: 7
5. 实验原理图: 7
8
: 8
10
10
流水灯控制的实验要求与思路

在流水灯控制系统中,,然后分别以1S、、2S的时间间隔和相同顺序点亮8个LED灯,以此为一个循环,重复以上四个步骤就可以实现流水灯系统的自动循环运作。

根据时钟信号的脉冲输入,我们以改变每个LED点亮状态的保持的时间来改变LED的变换间隔时间,根据LED的循环点亮和时间间隔的改变设计成为一个直观的LED流水灯自动循环系统,由此思路我们就可以很容易的着手流水灯控制程序的设计。
系统逻辑设计:
根据以上的设计要求,运用模块化的设计思路,我们在Quartus 软件系统中设计了LED流水灯控制模块、分频器模块,并通过各个模块程序之间的端口合理连接和协调,成功设计出LED流水灯灯控制电路,得到逻辑结构原理图,即为整个流水灯控制电路的逻辑结构。使用VerilogHDL语言设计相应的模块。

(1)// 分频器部分,获得便于试验观察的时钟信号
module clk_div(clk_out,clk_in);
input clk_in;
output clk_out;
reg clk_out;
integer counter;
t=25_000_000;
always @(posedge clk_in)
begin
counter<=counter+1;
if(counter==cnt/2-1)
begin
clk_out<=!clk_out;
counter<=0;
end

end
endmodule
(2)//控制模块:
module lsd(clk,led);
input clk;
output [7:0]led;// 输出端口定义为寄存器型
reg [7:0] count;
reg [7:0] count1;
reg [7:0] count2;
reg [7:0] led;
reg [3:0] state;
always @(posedge clk)// always语句,表示每当CLK的上升沿到来时,完成begin-end之间语句的操作
begin
count<=count+1;
if(count<17)
begin
state = state + 4'b0001; // one clk,one state
case(state)
4'b0000: led <= 8'b00000001; //the 1st state
4'b0001: led <= 8'b00000010;
4'b0010: led <= 8'b00000100;
4'b0011: led <= 8'b00001000;
4'b0100: led <= 8'b00010000;
4'b0101: led <= 8'b00100000;
4'b0110: led <= 8'b01000000;
4'b0111: led <= 8'b10000000;

4'b1000: led <= 8'b10000000;
4'b1001: led <= 8'b01000000;
4'b1010: led <= 8'b00100000;
4'b1011: led <= 8'b00010000;
4'b1100: led <= 8'b00001000;
4'b1101: led <= 8'b00000100;
4'b1110: led <= 8'b00000010;
4'b1111: led <= 8'b00000001;
default: state = 4'b0000; // default,8'b00000001
endcase
end
else if(count<49)
begin
if(count%2==0)
begin
state = state + 4'b0001; // one clk,one state
case(state)