基于FPGA的数字电路实验(一):实验准备及示例项目

2024-02-24 02:38

本文主要是介绍基于FPGA的数字电路实验(一):实验准备及示例项目,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近在做数字电路的实验,写点文章记录下过程:
我们的教学开发板是Nexys3,淘宝上要1000多。。基于FPGA,开发语言是VerilogHDL,开发平台是ISE Design Suite,调试工具使用的是Digilent Adept。

FPGA

FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。 —— [ 百度百科 ]


Nexys3

Nexys 开发板是基于最新技术Spartan-6 FPGA的数字系统开发平台。它拥有48M字节的外部存储器(包括2个非易失性的相变存储器),以及丰富的I/O器件和接口,可以适用于各式各样的数字系统。 板上自带AdeptTM高速USB2接口可以为开发板提供电源,也可以烧录程序到FPGA,用户数据的传输速率可以达到38M字节/秒。
Nexys3开发板可以通过添加一些低成本的外设Pmods (可以多达30几个)和Vmods (最新型外设)来实现额外的功能,例如A/D和D/A转换器,线路板,电机驱动装置,和实现装置等等。另外,Nexys3完全兼容所有的赛灵思工具,包括免费的WebPackTM,ChipscopeTM,EDKTM(嵌入式处理器设计套件),以及其他工具。 —— [ 百度百科 ]
Nexys3开发板


Verilog HDL

Verilog HDL是一种硬件描述语言(HDL:Hardware Description Language),以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。 Verilog HDL和VHDL是世界上最流行的两种硬件描述语言,都是在20世纪80年代中期开发出来的。前者由Gateway Design Automation公司(该公司于1989年被Cadence公司收购)开发。两种HDL均为IEEE标准。 —— [ 百度百科 ]


ISE Design Suite

Xilinx ISE Design Suite是利用新技术来降低总设计成本的电子设计套件软件,并且实现了比任何其它 PLD 解决方案更高的性能。借助 Xilinx ISE Design Suite 的突破性技术提高系统级设计效率并加快产品投产。 ISE Design Suite 采用各种方法来实现团队设计、功耗优化以及简化 IP 集成,从而分发挥 Xilinx 目标设计平台在配置逻辑、嵌入式和 DSP 设计方面的潜力。 所有这一切均可通过紧密集成的设计流程来实现。
ISE Design Suite: Logic Edition —— [ 百度百科 ]


软件下载安装就不说了,记得给ISE添加证书。之后开始第一个示例项目

  1. 创建项目

  2. 输入项目名称,Next

  3. Project Settings里记得在Family里选择Spartan6,然后在Device里选择XC6SLX16,Package里选择CSG324,Next

  4. 新建工程的信息,Finish

至此,项目创建完毕,然后是编写代码

  1. 工程管理区任意位置单击鼠标右键,选择New Source

  2. 选择Verilog Module,输入文件名,Next

  3. Define Module是端口定义对话框,可以直接在这里定义输入输出信号,信号最高位最低位,可以跳过在之后的源程序中添加,Next

  4. Finish

  5. 输入代码
    module First_M(A,B,C,D,E,F
    );
    input A,B,C,D,E;
    output F;
    wire A,B,C,D,E,F;
    assign F=~((A&B&C)|(D&E));
    endmodule

    完成图片

  6. 语法检查,双击Check Syntax,变为绿色的勾即为正确

  7. 在工程管理去将View设置为Simulation,右键,选择Verilog Test Fixture编写测试文件,Next

  8. Next

  9. ISE自动生成基本的信号并对被测模块做了例化,在//Add stimulus here 后添加测试代码。

    A = 1;
    B = 0;
    C = 1;
    D = 0;
    E = 1;

  10. 双击Behavioral Check Syntax检查语法

  11. 双击Simulate Behavior Model启动行为级仿真

    如图所示
    可以看到在100ns的时候,A,C,E的波形从0变为1

  12. 将View切换为Implementation,双击Synthesize-XST,看逻辑综合是否有错,如没有语法错误,XST能够给出初步的资源消耗情况,点击Design Summary即可查看

  13. 双击Synthesize-XST下的View RTL Schematic,打开设计综合后的寄存器传输级(RTL)视图。弹出的对话框中选择Start with a schematic of the top-level block,点击OK
    顶层模块识图

  14. 双击顶层模块可进入与之相应的模块内部RTL视图

    这里写图片描述

  15. 双击View Technology Schematic,可查看工艺级视图
    这里写图片描述

  16. 配置管脚,可直接右键新建Implementation Constraints File生成约束文件,也可点击Tools下的PlanAhead,在I/O Prots中分配引脚。

  17. 双击Implementation Design进行逻辑综合与实现

  18. 双击Generate Programming File生成二进制比特文件

  19. 打开Adept软件,将Nexys3通过USB连接电脑,软件会自动识别,点击Browse,找到工程文件夹中的first_m.bit文件,点击Program,文件会下载到开发板上。下载过程中,Done灯处于熄灭状态,下载完成后会出现Programming Successful,Done灯会再次点亮,表明代码下载成功。

  20. 在板上验证结果。

这是一个比较完整的项目开发流程,实际使用中,可能并不需要测试仿真等步骤,这个自行选择即可。

未完待续~

这篇关于基于FPGA的数字电路实验(一):实验准备及示例项目的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/740690

相关文章

HTML5的input标签的`type`属性值详解和代码示例

《HTML5的input标签的`type`属性值详解和代码示例》HTML5的`input`标签提供了多种`type`属性值,用于创建不同类型的输入控件,满足用户输入的多样化需求,从文本输入、密码输入、... 目录一、引言二、文本类输入类型2.1 text2.2 password2.3 textarea(严格

MySQL中between and的基本用法、范围查询示例详解

《MySQL中betweenand的基本用法、范围查询示例详解》BETWEENAND操作符在MySQL中用于选择在两个值之间的数据,包括边界值,它支持数值和日期类型,示例展示了如何使用BETWEEN... 目录一、between and语法二、使用示例2.1、betwphpeen and数值查询2.2、be

python中的flask_sqlalchemy的使用及示例详解

《python中的flask_sqlalchemy的使用及示例详解》文章主要介绍了在使用SQLAlchemy创建模型实例时,通过元类动态创建实例的方式,并说明了如何在实例化时执行__init__方法,... 目录@orm.reconstructorSQLAlchemy的回滚关联其他模型数据库基本操作将数据添

Java数组动态扩容的实现示例

《Java数组动态扩容的实现示例》本文主要介绍了Java数组动态扩容的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1 问题2 方法3 结语1 问题实现动态的给数组添加元素效果,实现对数组扩容,原始数组使用静态分配

JAVA项目swing转javafx语法规则以及示例代码

《JAVA项目swing转javafx语法规则以及示例代码》:本文主要介绍JAVA项目swing转javafx语法规则以及示例代码的相关资料,文中详细讲解了主类继承、窗口创建、布局管理、控件替换、... 目录最常用的“一行换一行”速查表(直接全局替换)实际转换示例(JFramejs → JavaFX)迁移建

JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)

《JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)》:本文主要介绍如何在IntelliJIDEA2020.1中创建和部署一个JavaWeb项目,包括创建项目、配置Tomcat服务... 目录简介:一、创建项目二、tomcat部署1、将tomcat解压在一个自己找得到路径2、在idea中添加

解决idea启动项目报错java: OutOfMemoryError: insufficient memory

《解决idea启动项目报错java:OutOfMemoryError:insufficientmemory》:本文主要介绍解决idea启动项目报错java:OutOfMemoryError... 目录原因:解决:总结 原因:在Java中遇到OutOfMemoryError: insufficient me

MyBatis中的两种参数传递类型详解(示例代码)

《MyBatis中的两种参数传递类型详解(示例代码)》文章介绍了MyBatis中传递多个参数的两种方式,使用Map和使用@Param注解或封装POJO,Map方式适用于动态、不固定的参数,但可读性和安... 目录✅ android方式一:使用Map<String, Object>✅ 方式二:使用@Param

SpringBoot实现图形验证码的示例代码

《SpringBoot实现图形验证码的示例代码》验证码的实现方式有很多,可以由前端实现,也可以由后端进行实现,也有很多的插件和工具包可以使用,在这里,我们使用Hutool提供的小工具实现,本文介绍Sp... 目录项目创建前端代码实现约定前后端交互接口需求分析接口定义Hutool工具实现服务器端代码引入依赖获

C#中DateTime的格式符的实现示例

《C#中DateTime的格式符的实现示例》本文介绍了C#中DateTime格式符的使用方法,分为预定义格式和自定义格式两类,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值... 目录DateTime的格式符1.核心概念2.预定义格式(快捷方案,直接复用)3.自定义格式(灵活可控