FPGA快速入门1——通过LED流水灯入门FPGA

  1. FPGA编程语言

       Verilog HDL(Hardware Description Language)是在用途最广泛的在C语言的基础上发展起来的一种硬件描述语言,具有灵活性高、易学易用等特点。 Verilog HDL可以在较短的时间内学习和掌握,目前已经在FPGA开发/IC设计领域占据绝对的领导地位。这里以一个简单的案例开始,请仔细看代码结构。

       该案例,包含了可综合的verliog语言的主要语法,明白后,即可开始基本的FPGA编程。

  1. 简单的编程案例

      为快速入门Verilog语言,先从简单的编程案例开始。以LED流水灯程序为例来给大家展示Verilog的程序框架,代码如下所示。

module led(
input sys_clk , //系统时钟
input sys_rst_n, //系统复位,低电平有效
output reg [3:0] led //4位LED灯
);

//parameter define
parameter WIDTH = 25 ;
parameter COUNT_MAX = 25_000_000; //板载50M时钟=20ns,0.5s/20ns=25000000,需要25bit
//位宽
//reg define
reg [WIDTH-1:0] counter ;
reg [1:0] led_ctrl_cnt;
//wire define
wire counter_en ;
//***********************************************************************************
//** main code
//***********************************************************************************
//计数到最大值时产生高电平使能信号
assign counter_en = (counter == (COUNT_MAX - 1'b1)) ? 1'b1 : 1'b0; 
//用于产生0.5秒使能信号的计数器
always @(posedge sys_clk) 
begin
   if (sys_rst_n == 1'b0)
      counter <= 1'b0;
   else if (counter_en)
      counter <= 1'b0;
   else
      counter <= counter + 1'b1;
end

//led流水控制计数器
always @(posedge sys_clk) 
begin
   if (sys_rst_n == 1'b0)
       led_ctrl_cnt <= 2'b0;
   else if (counter_en)
       led_ctrl_cnt <= led_ctrl_cnt + 2'b1;
end

//通过控制IO口的高低电平实现发光二极管的亮灭
always @(posedge sys_clk) 
begin
    if (sys_rst_n == 1'b0)
        led <= 4'b0;
    else begin
        case (led_ctrl_cnt) 
            2'd0 : led <= 4'b0001;
            2'd1 : led <= 4'b0010;
            2'd2 : led <= 4'b0100;
            2'd3 : led <= 4'b1000;
            default : led <= 4'b1111;
        endcase
   end
end

endmodule 

Verilog最主要的语法如下:

  • 注释:两种方式,一种是以“/*”符号开始,“*/”结束,在两个符号之间的语句都是注释语句,因此可扩展到多行。另一种是以//开头的语句,它表示以//开始到本行结束都属于注释语句。
  • 模块定义:以module开始,endmodule结束;
  • 端口定义:input  output
  • 数据类型的定义:reg 、wire、parameter
  • assign语句:条件成立选择1,否则选择0
  • always语句:语句中的posedge代表在时钟上升沿进行信号触发。begin/end代表语句的开始和结束。
  • If-else语句:和C语言是比较类似的。
  • Case语句:需要一个case关键字开始,endcase关键字结束,default作为默认分支,和C语言也是类似的。
  • 问号语句:与if-else类似。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值