数字集成电路课程设计 (自动保存的)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字集成电路实验课程设计
一、课程设计题目:简易流水灯设计
二、设计任务与要求
设计一个电路使8位发光二极管依次显示,要求能够通过按键控制完成由右向左亮,由左向右亮,以及闪灯间隔的配置功能。
三、设计方案
写一个模块来实现流水灯的功能,通过两个按键控制完成由右向左亮,由左向右亮,以及闪灯间隔的配置。第一个按键通过选择计数器来控制延时时间以实现闪灯间隔的配置;第二个按键通过选择移位方向来控制流水灯从左向右或从右向左亮。
流程图:
四、Verilog程序
module led( //这行定义了模块名字为led
input clk,
input rst,
input fx,//定义控制流水灯方向按键输入
input jx,//定义控制闪灯间隔按键输入·
output reg[7:0] led
);
reg [25:0] count; //延时计数器,这里是25位计数器,为32M。
reg [50:0] count;//延时计数器,50位,64M。
always @(posedge clk) //每个时钟上升沿进行下面动作
if(rst)
led <= 8'b10000000; //复位初始化,只有一个灯亮着,这里做一个灯的流水灯,如always @(posedge clk) 果做两个灯,就是11000000
if(jx==1)//jx输入为1时使用reg[25],否则使用reg[50]
if(reg[25] == 1) //计数满32M之后再进行下面动作,延时。
else
if(reg[50]==1)
begin
if (led == 8’b00000001) //当滚动到尽头,回到左侧起始端
led <= 8’b10000000;
else if(fx==1)
led <= {led[0],led[7:1]} //右移,用并置符实现
else
led <= {led[6:0],led[7]}
end
endmodule