2022 12月08日
  • 浏览: 624
  • 收藏:0
  • 点赞:3
FPGA点亮流水灯

采用Verilog语言,语法与C语言比较像。根据我自己的理解,尽量每一步都给注释;

前沿知识:

变量:

变量是指程序运行时可以改变其值的量,下面主要介绍常用的两种。

Wire型:Wire 类型变量,也叫网络类型变量,用于结构实体之间的物理连接,如门与门之间,不能储 存值,用连续赋值语句 assign 赋值,定义为 wire [n-1:0] a ; 其中 n 代表位宽,如定义 wire a ; assign a = b ; 是将 b 的结点连接到连线 a 上。

Reg型:Reg 类型变量,也称为寄存器变量,可用来储存值,必须在 always 语句里使用。其定义为 reg [n-1:0] a ; 表示 n 位位宽的寄存器,如 reg [7:0] a; 表示定义 8 位位宽的寄存器 a。


赋值:“=”阻塞赋值,”<=”非阻塞赋值。阻塞赋值为执行完一条赋值语句,再执行下一条,可理解为 顺序执行,而且赋值是立即执行;非阻塞赋值可理解为并行执行,不考虑顺序,在 always 块语句 执行完成后,才进行赋值。



下图代码LED0为亮,1为灭。流水灯每次移动1位

module test                          //采用Quartus II 13.0sp1 (64-bit),不能用中文名,文件名要设置为test,文件夹名字一样
(
    input           clk,           // 系统时钟50Mhz,即为1s
    input           rst_n,         // 复位开关
    output reg[5:0] led            // 从LED_0到LED_5
    
);
 
//前面都是定义输入和输出,提醒只有output多个时需要用reg,input不用

 
 
 
//下面定义时钟
reg [31:0]      timer;
 

always@(posedge clk or negedge rst_n)//posedge上升沿和negedge下降沿
begin
    if (rst_n == 1'b0)
        timer <= 32'd0;  //如果复位开关状态为0,则计数器赋值为0                  
		  else if (timer == 32'd199_999_999)      //(50M*6-1=299_999_999)下划线不影响表达
        timer <= 32'd0;                     //计数完毕,清除计时器,重新计数,把这里else if删除后可以让流水灯不循环
    else
        timer <= timer + 32'd1;             //timer counter = timer counter + 1
end
 
// LED control
always@(posedge clk or negedge rst_n)
begin
    if (rst_n == 1'b0)//判断复位开关状态
    
    
     led <= 6'b000000;//初始状态,灯全灭
  //when the reset signal active
  
  
    else if (timer == 32'd49_999_999)       //第1个状态6位2进制,12个灯0表示亮1表示灭
      led <= 6'b011111;  
  
 
    else if (timer == 32'd99_999_999)       //第2个状态6位2进制,12个灯0表示亮1表示灭
      led <= 6'b101111;
      
      
    else if (timer == 32'd149_999_999)      //第3个状态6位2进制,12个灯0表示亮1表示灭
    led <= 6'b110111;
 
   else if (timer == 32'd199_999_999)       //第4个状态6位2进制,12个灯0表示亮1表示灭
      led <= 6'b111011; 
	
   else if (timer == 32'd249_999_999)       //第5个状态6位2进制,12个灯0表示亮1表示灭
      led <= 6'b11101; 	
	
   else if (timer == 32'd299_999_999)       //第6个状态6位2进制,12个灯0表示亮1表示灭
      led <= 6'b111110; 	
      
end
endmodule

image.png


image.png




  

发表评论

评论列表


没有评论

筛选

文章分类

热门文章

企业招聘网址

2023-12-07  浏览:3012次

BC1.2协议介绍

2023-06-14  浏览:2914次

USB2.0速度识别

2023-10-23  浏览:1343次