数字集成电路课程设计 (自动保存的)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档