FPGA学习笔记第二弹

本文介绍了FPGA设计中的一些实用技巧,包括推荐的代码编辑软件Notepad++,Verilog的基本语法模块、端口声明、数据类型、条件判断等。还探讨了if...else与case的区别,强调了inout端口的使用注意事项。此外,文章讨论了4输入LUT结构和状态机设计,特别提到了不同类型的状体机及其在代码维护性上的差异。
摘要由CSDN通过智能技术生成

FPGA设计技巧:
1:一款好用的编辑软件:
其实我们完全可以使用Vivadao或者Quartus自带的编辑代码软件。这两个我都用过,但是说实在的我是都用过了,着实一搬般。然后推荐一下我一直在用的编辑软件:Notepaid++。体积小,插件多,字体可调,语法高亮。

2:Verilog基本语法:
现在我们来复习一下Verilog的基本语法吧:
module…endmodule(每个模块,必不可少的)
input output inout (端口声明语句)
wire reg (声明数据类型,默认是wire型)
parameter (常量定义)
if…else if…else…(条件判断语句)
!= , == , >= (等逻辑判断条件)
case…default…endcase(状态机)
always (块)
task…endtask(任务语句)

3:if…else 和 case 的区别:
其实二者之间并没有区别。形式上来看,if…esle 有明显优先级,case 则是并行运行的。但是现阶段,综合逻辑的功能足够强大,那么两者之间就没有明显的区别了,所消耗的资源和执行的速度是一样的。注意一下case 是可以用拼接的形式做组合的。少用优先级的语句,因为他们更加的占用资源。

4:inout:
inout 其使用的比较少,需要注意的是,我们不能同时把inout 即作为输入,又同时作为输出。

5:4输入LUT结构
这个涉及到查找表的相关知识,就是我们应该如何最大限度的发挥FPGA的能力,充分的利用FPGA的资源。四个输入当然是最大程度的利用了资源,但是我们在实际的使用过程中很难真的满足这个需求。

6:状态机的设计
什么是状态机,其实简单来说,我认为就是描述状态变化的逻辑电路。很典型的就是SDRAM控制器的设计,我们需要控制SDRAM的不同状态满足SDRAM(IDEL,WR,RD)的不同设计功能。
状态机又分为:一段式状态机,二段式状态机,三段式状态机。单纯从形式上来区分的:那就是看有几个always块了,但是请搞清楚他们之间最显著的区别在于内在的逻辑:

一段式状态机(逻辑简单,大包大揽,不利维护,最好不用):


always@(posedge clk or negedge rst)
    if(!rst)begin
        cstate <= IDEL;
        cmd <= 3'b111;
    end
    
    else 
        case(cstate)
            IDEL: 
                if(wr_req)begin
                    cstate <= WR_S1;
                    cmd <= 3'b011;
                end
                else if (rd_req)begin
                    cstate <= RD_S1;
                    cmd <= 3'b011;
                end
                else begin
                    cstate <= IDEL;
                    cmd <= 3'b111;
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值