基于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

相关文章

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定

Vue3项目开发——新闻发布管理系统(六)

文章目录 八、首页设计开发1、页面设计2、登录访问拦截实现3、用户基本信息显示①封装用户基本信息获取接口②用户基本信息存储③用户基本信息调用④用户基本信息动态渲染 4、退出功能实现①注册点击事件②添加退出功能③数据清理 5、代码下载 八、首页设计开发 登录成功后,系统就进入了首页。接下来,也就进行首页的开发了。 1、页面设计 系统页面主要分为三部分,左侧为系统的菜单栏,右侧

SpringBoot项目是如何启动

启动步骤 概念 运行main方法,初始化SpringApplication 从spring.factories读取listener ApplicationContentInitializer运行run方法读取环境变量,配置信息创建SpringApplication上下文预初始化上下文,将启动类作为配置类进行读取调用 refresh 加载 IOC容器,加载所有的自动配置类,创建容器在这个过程

Maven创建项目中的groupId, artifactId, 和 version的意思

文章目录 groupIdartifactIdversionname groupId 定义:groupId 是 Maven 项目坐标的第一个部分,它通常表示项目的组织或公司的域名反转写法。例如,如果你为公司 example.com 开发软件,groupId 可能是 com.example。作用:groupId 被用来组织和分组相关的 Maven artifacts,这样可以避免

2. 下载rknn-toolkit2项目

官网链接: https://github.com/airockchip/rknn-toolkit2 安装好git:[[1. Git的安装]] 下载项目: git clone https://github.com/airockchip/rknn-toolkit2.git 或者直接去github下载压缩文件,解压即可。

9.8javaweb项目总结

1.主界面用户信息显示 登录成功后,将用户信息存储在记录在 localStorage中,然后进入界面之前通过js来渲染主界面 存储用户信息 将用户信息渲染在主界面上,并且头像设置跳转,到个人资料界面 这里数据库中还没有设置相关信息 2.模糊查找 检测输入框是否有变更,有的话调用方法,进行查找 发送检测请求,然后接收的时候设置最多显示四个类似的搜索结果

STM32(十一):ADC数模转换器实验

AD单通道: 1.RCC开启GPIO和ADC时钟。配置ADCCLK分频器。 2.配置GPIO,把GPIO配置成模拟输入的模式。 3.配置多路开关,把左面通道接入到右面规则组列表里。 4.配置ADC转换器, 包括AD转换器和AD数据寄存器。单次转换,连续转换;扫描、非扫描;有几个通道,触发源是什么,数据对齐是左对齐还是右对齐。 5.ADC_CMD 开启ADC。 void RCC_AD

zeroclipboard 粘贴板的应用示例, 兼容 Chrome、IE等多浏览器

zeroclipboard单个复制按钮和多个复制按钮的实现方法 最近网站改版想让复制代码功能在多个浏览器上都可以实现,最近看网上不少说我们的代码复制功能不好用的,我们最近将会增加代码高亮等功能,希望大家多多支持我们 zeroclipboard是一个跨浏览器的库类 它利用 Flash 进行复制,所以只要浏览器装有 Flash 就可以运行,而且比 IE 的