当前位置:首页 > 新闻资讯 > FPGA之家动态 >

我的第一个FPGA开发项目——二选一多路器

时间:2024-07-25      来源:网络搜集 关于我们 0

击上方“果果小师弟”,选择“置顶/星标公众号

干货福利,第一时间送达!

欢迎FPGA工程师加入官方微信技术群

点击蓝字关注我们FPGA之家-中国最好最大的FPGA纯工程师社群

摘要:最近项目中要用到FPGA,由于之前没有接触过FPGA的知识,从零开始,经过两天的学习,完成了自己的第一个小项目,二选一多路选择器。不知道有没有小伙伴也在学习FPGA啊!

市面上笔者现在知道的有四家做FPGA的:黑金、小梅哥、正点原子、野火。其中黑金和小梅哥做FPGA是比较早的。正点原子和野火是这两个年开始做起来的,属于后起之秀。初学,不敢说哪一家好与不好,所以正点原子和野火和小梅哥的FPGA资料都下载了(百度网盘超级大会员)。看了一下感觉资料都不错。所以我是同时看三家的PDF文件,综合起来学习,这样感觉很不错

这里关于FPGA的简介以及历史我就不多做介绍了,学习FPGA之前当然是要搭建环境了。

所需要的安装的软件

1、QuartusII13.0(相当于Keil)

2、ModeSim(仿真用的)

3、UltraEdit(文本编辑器,在QuartusII内部编写中文会乱码)

1、安装QuartusII

1、双击安装包,以管理员身份运行。

2、我接受协议。

3、选择QuartusII的安装路径,切记安装路径不能有中文。

4、选择要安装的组件。安装组件,默认全选。

注:开发软件的使用离不开器件库,器件库的的安装有两种方式,一种是与开发软件一并安装,但器件库必须与安装软件存放在同一文件夹,软件安装时,组件的选择包括器件库,如图所示;

选择安装组件(器件库一并安装)

5、显示安装整体信息,准备软件安装。如图 4-11 所示,安装信息包括 Quartus II软件安装路径、软件安装所需磁盘空间大小以及磁盘可用空间大小,磁盘空间足够,直接点击“Next”。

5、等待安装结束。安装过程所需时间主要由电脑性能和器件库大小决定,安装完成后点击“Next”。

6、软件安装完成。图中包含三个选项卡,分别表示是否创建桌面快捷方式、是否立即打开软件、是否提供反馈。勾选第一选项,创建桌面快捷方式,点击“Finish”,完成软件安装。

10、软件安装完成,创建桌面快捷方式。安装完成的Quartus软件可试用 30 天,若各位想要长期使用,请支持正版。

2、安装ModelSim

modelsim的安装方法和quartus方法一样,下载好安装包后傻瓜式安装即可。

3、初始Verilog HDL

Verilog是硬件描述语言,顾名思义,就是用代码的形式描述件的功能,最终在硬件电路上实现该功能。在 Verilog描述岀硬件功能后需要使用综合器对Ⅴerilog代码进行解释并将代码转化成实际的电路来表示,最终产生实际的电路,也被称为网表。这种将Verilog代码转成网表的工具就是综合器。

硬件描述语言(Hardware Description Lagnuage,HDL)通过描述硬件的实现方法,来产生与之对应的真实的硬件电路,最终实现所设计的预期功能。设计方式与软件不同,因此也就意味着其描述的各个功能之间,可以像硬件一样实现真正的并行执行,这也是硬件描述语言和软件的不同。之所以不直接叫硬件语言却叫硬件描述语言的原因是:这是通过一种语言来“描述”我们设计的硬件所要实现的功能,而不是直接对硬件进行设计。硬件描述语言描述完设计的功能后,还需要通过“综合”这一过程才能最终生成所设计功能的硬件电路

目前常用的硬件描述语言主要有两种,一种是Verilog HDL(以下简称 Verilog),另一种是VHDL,它们之间有什么不同呢?

VHDL与Verilog相比VHDL与Verilog相比语法比 Verilog严谨,通过 EDA 工具自动语法检查,易排除许多设计中的疏忽。有很好的行为级描述能力和一定的系统级描述能力,而Verilog建模时,行为与系统级抽象及相关描述能力不及 VHDL。VHDL 代码较冗长,在相同逻辑功能描述时,Verilog 的代码比 VHDL少许多。VHDL对数据类型匹配要求过于严格,初学时会感到不是很方便,编程耗时也较多;而 Verilog 支持自动类型转换,初学者容易入门。VHDL对版图级、管子级这些较为底层的描述级别几乎不支持,无法直接作集成电路底层建模。

上图是一段Verilog代码,该代码实现了一个加法器的功能。在经过综合器解释后该代码被转化成一个加法器电路。QUARTUS、ISE和VIVADO等FPGA开发工具都是综合器,而在集成电路设计领域常用的综合器是DC。

4、代码编写

项目要求

二选一多路器,两个输入IO:a、b。可以是高电平,也可是低电平。输入按键按下时,LED灯与a端口状态保持一致;输入按键释放时,LED灯与b端口状态保持一致。

FPGA的开发流程一般是按照上图的标准。

1、设计定义

这个步骤主要是明确项目的功能以及要求,然后打开quartus新建一个工程

2、设计输入

这一步主要是新建文件,编写功能代码。

module led_test(a,b,key_in,led_out)

;

 input a;  //输入端口A input b;  //输入端口B input key_in;  //按键输入,实现输入通道的选择 output led_out; //led 控制端口 //当 key_in == 0 :led_out = a assign led_out = (key_in == 0

)? a : b;

endmodule

3、分析综合

这一步主要是对我们的代码进行编译,查看是否有语法错误,如果编译正确没有错误就大致可以认为代码没有错误,就可以进行下一步,否则,继续查找问题编写功能代码。

4、功能仿真

在FPGA设计的过程中,不可避免会出现各种BUG。如果在编写好代码、综合成电路、烧写到FPGA后才发现问题,此时再去定位问题就会非常地困难。而在综合前,设计师可以在电脑里通过仿真软件对代码进行仿真测试,检测出BUG并将其解决,最后再将程序烧写进FGA。一般情况下可以认为没有经过仿真验证的代码,一定是存在BUG的。为了验证以上逻辑设计是否成功,在直接下载到开发板观察现象之前需编写激励文件,此处再新建一个.v文件并输入如下代码,并再次进行分析和综合查看是否存在语法设计错误。

`timescale 1ns/1

ps

module

 led_test_tb;

 //激励信号定义,对应连接到待测试模块的输入端口

 reg signal_a;

 reg signal_b;

 reg signal_c;

 //待检测信号定义,对应连接到待测试模块的输出端口

 wire led;

 //例化待测试模块 led_test 

led_test0(

  .a(signal_a),

  .b(signal_b),

  .key_in(signal_c),

  .led_out(led)

 )

;

 //产生激励

 initial begin

  signal_a = 0;signal_b = 0;signal_c = 0

;

  #100;//延时 100ns  signal_a = 0;signal_b = 0;signal_c = 1

;

  #100

;

  signal_a = 0;signal_b = 1;signal_c = 0

;

  #100

;

  signal_a = 0;signal_b = 1;signal_c = 1

;

  #100

;

  signal_a = 1;signal_b = 0;signal_c = 0

;

  #100

;

  signal_a = 1;signal_b = 0;signal_c = 1

;

  #100

;

  signal_a = 1;signal_b = 1;signal_c = 0

;

  #100

;

  signal_a = 1;signal_b = 1;signal_c = 1

;

  #200

;

  $stop;

 end

endmodule

5、布线布局

点击Quartus Prime主界面的Start Compilation,进行综合&布局布线,布局布线过程中如遇出错,应根据编译错误信息具体修改。

6、时序仿真

点击Tools→Run Simulation Tool→Gate Leval Simulation或者在工具栏点击Gate Leval Simulation进行后仿真,也就是门级仿真。弹出选择时序模型对话框,可针对相应情况具体选择。此时可选择第一个时序模型:慢速工作、环境温度为85℃、内核供电1.2V的情况进行仿真。

时序仿真完成后,可以在Modelsim的波形窗口中看到时序仿真波形。从波形中发现与之前的功能仿真相比有了一些差异,如:存在不希望存在的脉冲、且在200ns时,led相对输入信号有一定时间的逻辑延时。

7、IO分配

IO分配其方法不唯一,常用的有三种。在标题栏中Assignments—Pin Planner或者直接单击工具栏的Pin Planner进行IO分配。同时也可通过编写Tcl文件的方式来实现引脚分配,此处需针对不同板卡进行不同的设置。

8、配置FPGA下载

最后就是下载代码到开发板了!

最后看看四家FPGA板子的真容吧,你觉得哪块板子最漂亮、性价比最高呢?

End

一扫

FPGA之家

欢迎FPGA、嵌入式、信号处理等工程师关注公众号

注我

攻城狮们!

全国最大的FPGA技术群社区

欢迎大家加入全国最大最强的FPGA微信技术群,这个群体拥有数万工程师、一群热爱技术的工程师,这里的FPGA工程师相互帮助,相互分享,技术氛围浓厚!赶紧叫上小伙伴一起加入吧!

           

           用手指按住就可以加入FPGA全国技术群哦!

国内最好的Xilinx和altera芯片供应商之一!

平台自营,进口原装品质保证!

持续供应多家军工研究所和上市公司!

最好的FPGA芯片价格和最好的售后服务!

拥有业内最顶尖的服务口碑!

全球顶尖供应商质量标准背书!

XILINX全系列订货或者现货优势!

XCVU9P-2FLGB2104I   200PCS

XCVU9P-2FLGA2104I   500PCS

XCVU13P-2FLGB2104I  300PCS

XC7K325T-2FFG900I   1500PCS

XC7K325T-2FFG676I  950PCS

XC7K160T-2FFG676I   850PCS

XC7VX690T-2FFG1927I  即将到货,敬请预定!

XC7VX690T-2FFG1761I  即将到货,敬请预定!

更多赛灵思型号需求请咨询我们!谢谢!扫码二维码即可!

                     

FPGA技术群官方鸣谢品牌:Xilinx、 intel(Altera)、microsemi(,Actel)、LattIC e,Vantis,Quicklogic,Lucent等对技术群的支持!


注明:本内容来源网络,不用于商业使用,禁止转载,如有侵权,请来信到邮箱:429562386ⓐqq.com 或联系本站客服处理,感谢配合!

用户登陆

    未注册用户登录后会自动为您创建账号

提交留言