求Verilog语言编写的循环彩灯控制器

语言:Verilog HDL
开发软件:Max+PlusII

具体要求:
输入key(取1或0)控制开始与暂停
输入端style(取1或0)控制循环方案(共两种,见下)
输出端为3盏彩灯(可用Light表示).

循环方案一:3盏灯从左到右依次亮起
循环方案二:3盏灯从右到左依次亮起

// test10.v

module light1(clock,key,style,light);

input clock,key,style ; //端口定义

output [2:0]light;

reg [2:0] light =3'b111 ;

reg clk = 1;

parameter cnt = 24000000;

reg [24:0]count;

always @ (posedge clock) //分频计数

begin

if (count < cnt)

count = count + 25'b1;

else

begin

count = 0;

clk = ~ clk;

end
end

always @ (posedge clk) //LED灯输出

begin

if (!key) //key键被按下

light = light; //暂停

else

begin

if (!style) //style被按下

begin

if (light==0)

light=3'b111; //LED灯全部点亮时,重新熄灭再准备下次循环

else

light =light>>1; //LED灯右移

end

else

begin

if (light ==3'b000) //LED灯全部点亮时,重新熄灭再准备下次循环

light =3'b111;

else

light = light<<1; //LED灯左移

end

end

end

endmodule

这个程序我已经在Actel板上烧过了,没问题。如果还有什么问题应该是你的板不同或者工具不同,我是在libero_8.5上做的
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-11-06
//
test10.v
module
light1(clock,key,style,light);
input
clock,key,style
;
//端口定义
output
[2:0]light;
reg
[2:0]
light
=3'b111
;
reg
clk
=
1;
parameter
cnt
=
24000000;
reg
[24:0]count;
always
@
(posedge
clock)
//分频计数
begin
if
(count
<
cnt)
count
=
count
+
25'b1;
else
begin
count
=
0;
clk
=
~
clk;
end
end
always
@
(posedge
clk)
//LED灯输出
begin
if
(!key)
//key键被按下
light
=
light;
//暂停
else
begin
if
(!style)
//style被按下
begin
if
(light==0)
light=3'b111;
//LED灯全部点亮时,重新熄灭再准备下次循环
else
light
=light>>1;
//LED灯右移
end
else
begin
if
(light
==3'b000)
//LED灯全部点亮时,重新熄灭再准备下次循环
light
=3'b111;
else
light
=
light<<1;
//LED灯左移
end
end
end
endmodule
这个程序我已经在Actel板上烧过了,没问题。如果还有什么问题应该是你的板不同或者工具不同,我是在libero_8.5上做的

Verilog 编写的LED 程序,求高手详细解释一下,我是新手
buffer<=buffer+1'b1;这是一个阻塞式语句 一般用于时序逻辑中 有一个时钟的延时 该句等效于C语言的 buffer++;

急!!!led显示屏的Verilog HDL代码
\/***数码管的静态显示从0到9***\/ \/\/加计数器计数值在一个数码管上显示,k2(en)为低电平时停止加数,\/\/k1(rst)为低电平时清0 显示的数在0-9之间 \/\/2010-5-23 16:14:07 module shu_jingjia_10(clk,wei,shu,rst,en,led);input clk,rst,en;output wei;output[7:0] shu,led;reg...

使用VHDL编写Testbench进行仿真
网络上多见以Verilog语言编写的Testbench示例,本文将以一段D触发器代码为例,从VHDL角度,介绍Testbench配置方法。首先,让我们了解D触发器的原理。D触发器是时序逻辑电路的基本组件之一,带有异步复位端。如图所示,D触发器包含d、clk、rst三个输入端,一个输出端q。其功能如下:在rst为1时,D触发器...

求EDA Verilog HDL编写的自动售货机,硬件实现利用的是触发开关,就是按...
触发开关?按一下回来是什么意思啊?自动售货机的话不是应该对硬币和纸币识别,里面就要有传感器,然后再是fpga对识别到的信息作各种处理、、、

请问用verilog语言编写的基于DDS的数字函数信号发生器的代码应该是怎样...
首先你需要一个地址产生器,然后还需要做一个波形存储器,这样子你看就可以控制不同的速度就进行地址加1操作,然后根据不同的地址去查找波形存储器的数据,这样子输出来就可以了,没有什么难的

FPGA用什么语言编写好。
一般可以使用VERILOG 或者VHDL编写。其实两种语言的差别并不大,他们的描述能力也是类似的。掌握其中一种语言以后,可以通过短期的学习,较快的学会另一种语言。 选择何种语言主要还是看周围人群的使用习惯,这样可以方便日后的学习交流。当然,如果您是专用集成电路(ASIC)设计人员,则必须首先掌握verilog,...

如何用Quartus II对用Verilog HDL语言编写的源码进行仿真 ?
1.首先创建一个工程,再在new中新建添加verilog文本,再进行编译!2.编译成功后,到file——create\/update——create symbol Files for current 3.成功后到New——Block diagram\/Schematic File——在空白处点击鼠标右键——insert——symbol——选择project 文件夹下的子文件,点OK键——再在空白处点击...

如何用Quartus II对用Verilog HDL语言编写的源码进行仿真
要使用QuartusII 进行仿真,首先进行代码编译。代码输入完成后,点击start compilation按钮开始编译,编译完毕后,点击新建按钮,新建一个WaveForm文件。然后打开Node Finder,将Pin选择为 All,然后点击 find 按钮,将会将你的代码中的所有输入输出管脚都显示出来,用鼠标选择所有管脚,拖动到WaveForm文件的波形...

.v文件是什么文件?
.v就是Verilog语言编写的程序代码文件,就像c语言编程的.C文件一样。用Quartus当然可以打开,用Xilinx的ISE也可以,用FPGA开发软件都可以打开。

verilog可以自动分配管脚吗
是不可以的。编写的VERILOG语言只是描述了该模块的功能,如果要分配相应的管脚,首先要在建立工程时选择合适的芯片型号。然后,在verilog编写完成,全编译通过后,通过tools-pin assignments菜单进行相应的管脚分配。欢迎追问~

相似回答