这是你交叉`include出现的问题
推荐你在divdv
开头写上
`ifndef DIVD_V
`define DIVD_V
在最后写上
`endif
这样只要文件之前被include过了,就会有DVID_V这个define,这样就能避免同一个文件在不同的地方被include造成的重复declare
module LED_Module(Clock,LED_Data_Port);
input Clock;
output LED_Data_Port;
reg [7:0] LED_Data_Port; //LED数据口
reg [3:0] led_d; //LED显示数据
//================================================
integer cnt_led;
//==================================================
always @(posedge Clock)
begin
cnt_led <=cnt_led + 1;
if(cnt_led == 20000000)
begin
cnt_led <= 0;
led_d <= led_d + 1;
if(led_d == 8)
led_d <= 0;
end
end
always @( led_d ) begin
case (led_d)
4'd1:
LED_Data_Port[7:0] <= 8'b1000_0000;//8'b1000_0001;
4'd2:
LED_Data_Port[7:0] <= 8'b0000_0001;//8'b1100_0011;
4'd3:
LED_Data_Port[7:0] <= 8'b0000_0010;//8'b1110_0111;
4'd4:
LED_Data_Port[7:0] <= 8'b0000_0100;//8'b1111_1111;
4'd5:
LED_Data_Port[7:0] <= 8'b0000_1000;//8'b0001_1000;
4'd6:
LED_Data_Port[7:0] <= 8'b0001_0000;//8'b0011_1100;
4'd7:
LED_Data_Port[7:0] <= 8'b0010_0000;//8'b0111_1110;
4'd8:
LED_Data_Port[7:0] <= 8'b0100_0000;//8'b1111_1111;
default:
LED_Data_Port[7:0] <= 8'b0000_0000;//8'b1111_1111;
endcase
end
endmodule
很高兴回答你的问题!
如果以下回答合适,请采纳;如果不恰当,继续讨论。谢谢!
令clk为led流水灯的驱动时钟,rst为上升沿复位信号(异步)。则所实现的Verilog HDL代码部分如下:
module led_run(clk,led,rst);
input clk; //clk with low frequency like 1Hz
input rst; //system reset signal
output [11:0] led; //denotes 12 leds,
reg [11:0] led;
reg [2:0] state; //state variable,internal signals
reg [5:0] count; //control signals of the state diagram,internal signals
always @(posedge clk or posedge rst) //the state diagram
if (rst)
begin
state <= 3'b000;
count <= 6'b000000;
end
else
case(state)
详细代码见附件。
该代码的仿真波形如下图所示(注led低电平为亮,高电平为灭)
以上就是关于写了个verilog流水灯程序,quartus一直提示子模块重复定义。全部的内容,包括:写了个verilog流水灯程序,quartus一直提示子模块重复定义。、请问如何用verilog写8个流水灯、12个跑马灯 verilog hdl程序中rst复位 四种循环模式从左到右点亮 从右到左点亮等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)