verilog大作业

发布 2020-02-25 06:20:28 阅读 2234

彩灯控制器设计。

一设计任务

设计一种彩灯控制器控制8盏灯。该彩灯控制器有6种自动切换的花样。

1. 第一种花样为彩灯从右到左,然后从左到右逐次灭,全灭全亮;

2. 第二种花样为彩灯两边同时亮一个逐次向中间移动再散开;

3. 第三种花样为彩灯两边同时亮两个逐次向中间移动再散开;

4. 第四种花样为彩灯两边同时亮三个,然后四亮四灭,四灭四亮,最后一灭一亮;

5. 彩灯右起第一第二第五第六盏灯亮,其他灯灭,然后第三第四第七第八盏灯亮,同时其他灯灭;

6. 第六种花样,彩灯先右七个亮,然后再左七个亮,最后全灭。

二程序模块分析。

1. 第一种花样为彩灯从右到左,然后从左到右逐次灭,全灭全亮;

case(flags)

0:begin //第一种花样。

case(i)

0:begin

f=8'b00000001;

i=1;end

1:begin

f =f<<1;//左移。

if (f==8'b10000000)

i=2;end

2:begin

f=f>>1;//右移。

if (f==8'b00000001)

i=3;end

3:begin

f =8'b00000000;

i=4;end

4:begin

f =8'b11111111;

i=0;flags=1;

endendcase

end2. 第二种花样为彩灯两边同时亮一个逐次向中间移动再散开;

1:begin //第二种花样。

case(i)

0:begin

f=8'b01111110;

i=1;end

1:begin

f=8'b10111101;

i=2;end

2:begin

f=8'b11011011;

i=3;end

3:begin

f=8'b11100111;

i=4;end

4:begin

f=8'b11011011;

i=5;end

5:begin

f=8'b10111101;

i=6;end

6:begin

f=8'b01111110;

i=0;flags=2;

endendcase

end3. 第三种花样为彩灯两边同时亮两个逐次向中间移动再散开;

2:begin //第三种花样。

case(i)

0:begin

f=8'b00111100;

i=1;end

1:begin

f=8'b10011001;

i=2;end

2:begin

f=8'b11000011;

i=3;end

3:begin

f=8'b10011001;

i=4;end

4:begin

f=8'b00111100;

i=0;flags=3;

endendcase

end4. 第四种花样为彩灯两边同时亮三个,然后四亮四灭,四灭四亮,最后一灭一亮;

3: begin //第四种花样。

case(i)

0:begin

f=8'b00011000;

i=1;end

1:begin

f=8'b00001111;

i=2;end

2:begin

f=8'b11110000;

i=3;end

3:begin

f=8'b10101010;

i=0;flags=4;

endendcase

end5. 彩灯右起第一第二第五第六盏灯亮,其他灯灭,然后第三第四第七第八盏灯亮,同时其他灯灭;

4:begin //第五种花样。

case(i)

0:begin

f=8'b11001100;

i=1;end

1:begin

f=8'b00110011;

i=0;flags=5;

endendcase

end6. 第六种花样,彩灯先右七个亮,然后再左七个亮,最后全灭。

5:begin //第六种花样

case(i)

0:begin

f=8'b10000000;

i=1;end

1:begin

f=8'b00000001;

i=2;end

2:begin

f=8'b11111111;

i=0;flags=0;

endendcase

end三。引脚分配。

四。系统程序。

module light ( clr,clk,f );

input clk,clr;

output [7:0] f;

reg [7:0] f;

reg[23:0]count;

reg clk1;

integer flags=0;

integer i=0;

always@(posedge clk) /分频。

beginif(!clr)

beginclk1<=0;

count<=1;

endelse

if(count==6000000)

beginclk1<=~clk1;

count=1;

endelse

count<=count+1;

endalways @(posedge clk1 ) 上升沿触发。

if(!clr)

beginf=8'b11111111; /当第一个时钟脉冲上升沿到来时,清零。

endelse

case(flags)

0:begin //第一种花样。

case(i)

0:begin

f=8'b00000001;

i=1;end

1:begin

f =f<<1;//左移。

if (f==8'b10000000)

i=2;end

2:begin

f=f>>1;//右移。

if (f==8'b00000001)

i=3;end

3:begin

f =8'b00000000;

i=4;end

4:begin

f =8'b11111111;

i=0;flags=1;

endendcase

end1:begin //第二种花样。

case(i)

0:begin

f=8'b01111110;

i=1;end

1:begin

f=8'b10111101;

i=2;end

2:begin

f=8'b11011011;

i=3;end

3:begin

f=8'b11100111;

i=4;end

4:begin

f=8'b11011011;

i=5;end

5:begin

f=8'b10111101;

i=6;end

6:begin

f=8'b01111110;

i=0;flags=2;

endendcase

end2:begin //第三种花样。

case(i)

0:begin

f=8'b00111100;

i=1;end

1:begin

f=8'b10011001;

i=2;end

2:begin

f=8'b11000011;

i=3;end

3:begin

f=8'b10011001;

i=4;end

4:begin

f=8'b00111100;

i=0;flags=3;

endendcase

end3: begin //第四种花样。

case(i)

0:begin

f=8'b00011000;

i=1;end

1:begin

f=8'b00001111;

i=2;end

2:begin

f=8'b11110000;

i=3;end

3:begin

f=8'b10101010;

i=0;flags=4;

endendcase

end4:begin //第五种花样。

case(i)

0:begin

f=8'b11001100;

i=1;end

1:begin

f=8'b00110011;

i=0;flags=5;

endendcase

end5:begin //第六种花样

case(i)

0:begin

f=8'b10000000;

i=1;end

1:begin

f=8'b00000001;

i=2;end

2:begin

f=8'b11111111;

Verilog中期作业

verilog中期作业 计数器报告。姓名 刘恒学号 2012160240 班级 微电2班。本次作业中,要实现以1hz脉冲为时钟信号的从00计数至59的计数器功能,我设计了一个由五个模块组成的工程,通过编写 写出具体功能,用顶层模块调用其余4个模块,实现在1hz从00至59的计数,复位功能。如下显示具...

verilog作业题

1 以结构描述方式实现下列逻辑 f ab acd cd的非 2 以连续赋值语句设计8位总线驱动器。3 以always语句设计8位总线驱动器。4 以always语句设计8位双向总线驱动器。1 设计一个具有低电平使能端和高电平使能端的2 4译码器。2 设计一个jk触发器。3 设计一个24分频期,要求输出...

verilog语法

第三章 verilog hdl的基本语法。前言。verilog hdl是一种用于数字逻辑电路设计的语言。用verilog hdl描述的电路设计就是该电路的verilog hdl模型。verilog hdl既是一种行为描述的语言也是一种结构描述的语言。这也就是说,既可以用电路的功能描述也可以用元器件和...