0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FPGA技术分享:FPGA杂记之基础篇

润欣科技Fortune 来源:润欣科技 作者:润欣科技Fortune 2020-11-30 11:31 次阅读

上海润欣科技股份有限公司创研社

Verilog基础语法

1.1 可综合模块

以module为单元,具体实现如下

1.1.1 时序逻辑

以异步触发的D触发器为例,时序逻辑在always块里实现

主要注意点:

1. 声明模块时,输入变量一定是wire类型

2. 声明模块时,输出变量可以是wire,也可以是reg, reg变量只能在always块中赋值

3. 敏感列表既可以是边沿触发,也可以是电平触发

4. 沿触发的逻辑里,一定采用的是非阻塞触发<=

1.1.2 组合逻辑

以数据选择器为例,组合逻辑通常使用assign语句赋值

主要注意点:

1. sel = 0时,c = a;sel = 1时,c =b,即二选一数据选择器。四选一则有两个选择端,四个输入端,八选一则是三个选择端,八个输入端。

2. wire 变量一定要用连续赋值语句赋值,而且必须用阻塞赋值

1.2 仿真模块

仿真模块和可综合模块的区别:

可综合模块最终生成的bit文件会烧录进芯片运行,而仿真模块编译过后是在仿真软件(例如modelsim)上运行的。仿真模块是基于可综合模块进行例化,并通过仿真软件的模拟,可以初步验证我们写的可综合模块的实现现象。

以计数器为例,可综合模块如下:

基于以上可综合模块的仿真模块如下:

1. 仿真的模块声明不需要输入列表

2. initial块只能对【寄存器】量进行赋值

3. 例化模块时,如果原始模块是输出变量,则括号内必须【wire变量】

HDL常见例子

2.1 译码器

2.1.1 可综合模块(case语句)

此模块用case实现了一个数据选择的功能,先产生了一个8位计数器,通过判断计数器的值来输出不同的取值,当计数器计数到1时,o_data和o_dv分别输出5和1,当计数器为2时,输出7和1,其余均输出0。(Note:Case语句常常运用于状态机中状态的判断)

Case语句注意点:

必须有default语句,否则会形成锁存器

2.1.2 仿真模块

2.2状态机

由于FPGA内部语句块都是并行运行的,当我们希望FPGA按照顺序执行我们的语句时,就会用到状态机。

下面例子是使用状态机模拟的一个简单的自动售货机,该售货机中的商品 2.5 元一件,每次投币既能投入 1 元, 也能投入 0.5 元,当投入 3 元时,需要设定找零。

2.2.1 状态图

2.2.2 可综合模块(2段式状态机)

2.2.3 仿真模块

2.2.4 仿真脚本

仿真脚本可以省去人工操作modelsim软件图形页面的步骤,运行脚本,modelsim可以根据脚本命令自动运行包括创建工作目录,编译文件,启动仿真等步骤,以下是本例中的仿真脚本。

仿真脚本编写好后,只需要进入仿真软件(本例使用的是modelsim),改变当前路径到脚本保存的路径,然后在modelsim命令行输入 do [脚本文件名]即可。

仿真结果:

2.2.5 上板测试

上板测试对原来的条件做了一定改动更方便观测结果,输入和输出分别使用的按键和LED灯,测试版使用的是Anlogic的EF3L40CG332B_DEV,实现的功能如下:

① 在开发板上完成自动售货机的实验,投币的动作通过按键实现, 当按一次按键(按下到抬起算一次),算作投币一次;

② 按键有两个,按下分别代表 5 毛和 1 元,可乐售价 2.5 元;

③ 当投入总金额为 5 毛时, led 灯亮一个,投入总金额为 1 元时, led 灯亮两个, 投入总金额为 1.5 元时, led 灯亮三个, 投入总金额为 2 元时, led 亮四个, 用单向流水灯效果充当出可乐并且不找零的情况,用双向流水灯效果充当既出可乐又找零的情况。流水灯持续十秒后熄灭,状态回到初始状态。

重新设计状态图如下:

代码详见工程fsm_key,笔记不再赘述,此次笔记主要记录关于顶层模块和例化的相关知识点:

工程目录如下所示:

各模块之间的关系是:

顶层文件是fsm.v,在fsm.v中调用了模块led_water_single,led_Water_double和key_debounce,这三个模块的功能分别是单向流水灯,双向流水灯和按键消抖。想在顶层文件中调用对应的模块需要在顶层文件中对相应的模块进行例化,以单向流水灯为例。

单向流水灯的声明如下:

(具体功能实现代码略,如有需要,请登录www.fortune-co.com留言)

那么在fsm.v中例化方法如下:

括号外的信号是对应的声明信号;括号内的信号是从fsm模块中传入的信号,该信号名称可以自定义。

整个工程的框架如下:(由于本实验没有另外写一个总的TOP文件,而是将例化和状态机信号处理都放在了fsm模块中,因此top层和状态机模块都标注的是fsm)

其中key05,key10,就是从外界接入的信号,led[7:0]即输出信号。接入信号我们要引到对应的按键,可以参考EF3L40CG332B_DEV的原理图

SW2和SW3对应的FPGA的管脚分别是R19和R20,同理可查,八个led的对应脚,并写出相应的管脚约束文件

管脚约束文件写完后,在可综合模块顶层文件中的输入输出信号就会对应到相应的物理输入输出,也可以使用图形页面设置。

完成后编译下载到板子上观测现象。

在本次实验的过程中也发生了一个编程错误问题,刚编写完上板测试时发现结果和预想的有差异,具体错处在输入3元进入双向流水灯的状态时,双向流水灯正向流水正常,当反向流水时,在倒数第二个灯会卡住,然后反复亮灭倒数一二个灯,没法完成反向流水。

由于第一次正向流水是正常的,因此推测是在反向流水时有条件判断错误使得反向流水无法正常运行,进入到led_water_double模块关于反向流水灯的操作模块,经查验发现是设置翻转标志的时候判断条件写错了。

判断条件应该是led == 8’b1111_1110,更改后,实验现象符合预期要求。

fqj

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1602

    文章

    21309

    浏览量

    593128
  • 触发器
    +关注

    关注

    14

    文章

    1677

    浏览量

    60394
收藏 人收藏

    评论

    相关推荐

    中高端FPGA如何选择

    时间。 这里的NOC和Routing的策略还是非常有意思的,大家有兴趣的话,我们可以专门再写一文章来介绍Achronix FPGA中的NOC。 3.Memory
    发表于 04-24 15:09

    FPGA技术的五大优势

    各行各业纷纷采用FPGA芯片是源于FPGA融合了ASIC和基于处理器的系统的最大优势。 FPGA能够提供硬件定时的速度和稳定性,且无需类似自定制ASIC设计的巨额前期费用的大规模投入。
    发表于 04-23 15:50 42次阅读

    fpga封装技术有哪些应用领域

    总的来说,FPGA封装技术凭借其高性能、灵活性和可靠性,在多个领域发挥着重要作用。随着技术的不断进步和应用需求的增长,FPGA封装技术的应用
    的头像 发表于 03-26 15:49 186次阅读

    fpga开发板是什么?fpga开发板有哪些?

    FPGA开发板是一种基于FPGA(现场可编程门阵列)技术的开发平台,它允许工程师通过编程来定义和配置FPGA芯片上的逻辑电路,以实现各种数字电路和逻辑功能。
    的头像 发表于 03-14 18:20 770次阅读

    fpga是什么 fpga用什么编程语言

    FPGA(Field-Programmable Gate Array)是一种可编程逻辑技术,它使用可重构的硬件单元(如门阵列和查找表)来实现电路功能。相比传统的专用集成电路(ASIC),FPGA具有
    的头像 发表于 02-04 15:26 478次阅读

    FPGA设计高级技巧 Xilinx

    FPGA设计高级技巧 Xilinx
    发表于 01-08 22:15

    【2023电子工程师大会】国产FPGA技术及国内FPGA发展pp

    【2023电子工程师大会】国产FPGA技术及国内FPGA发展ppt
    发表于 01-03 16:31 15次下载

    FPGA是什么?FPGA的工作原理和应用

    你是否好奇过FPGA技术是如何影响日常使用的设备的?在当今快节奏的技术领域中,FPGA变得越来越重要。FPGA拥有强大的功能和广泛的应用,驱
    的头像 发表于 11-02 10:06 1353次阅读

    FPGA技术的内部工作原理、应用和优势

    你是否好奇过FPGA技术是如何影响日常使用的设备的?在当今快节奏的技术领域中,FPGA变得越来越重要。FPGA拥有强大的功能和广泛的应用,驱
    发表于 11-02 10:04 272次阅读

    如何学习FPGAFPGA学习必备的基础知识

    FPGA已成为现今的技术热点之一,无论学生还是工程师都希望跨进FPGA的大门。网络上各种开发板、培训班更是多如牛毛,仿佛在告诉你不懂FPGA你就OUT啦。那么我们要玩转
    的头像 发表于 10-27 17:43 472次阅读

    线下国际研讨会 | 瑞苏盈科FPGA技术FPGA核心板应用-深圳站

    您是否正在寻找一种 快速 开发视觉应用的解决方案? 您是否想了解,如何利用 FPGA核心板 为您提供理想的技术解决方案? 您是否希望您的视觉应用能够满足高速数据处理、低延迟和 高可靠性 的需求
    发表于 10-23 11:44 260次阅读
    线下国际研讨会 | 瑞苏盈科<b class='flag-5'>FPGA</b><b class='flag-5'>技术</b>及<b class='flag-5'>FPGA</b>核心板应用-深圳站

    Altera FPGA_CPLD设计 高级

    Altera FPGA_CPLD设计 高级
    发表于 08-05 18:38

    简单了解FPGA可重构技术

    FPGA可重构技术就是通过上位机控制在FPGA运行过程中加载不同的Bitstream文件,FPGA芯片根据文件内的不同逻辑将内部的资源全部或部分进行重新配置以达到多种功能任务动态切换的
    发表于 08-04 10:08 402次阅读

    Lattice Insights:赋能FPGA应用设计和开发

    FPGA上设计和实现复杂的解决方案充满挑战。首次使用FPGA的用户可能上手很快,但是深入学习FPGA设计技术需要很多时间和精力。在莱迪思半导体,我们希望提供无缝衔接、令人满意的
    的头像 发表于 06-01 10:08 634次阅读

    FPGA资料

    )的一种。这个时间比著名的摩尔定律出现的时间晚 20 年左右,但是 FPGA 一经发明,后续的发展速度快,超出大多数人的想象。 图 1 中给出了 FPGA 芯片的实物图: 图 1 F
    发表于 05-30 20:40