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

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

3天内不再提示

FPGA之基础篇的技术分享

电子设计 来源:电子设计 作者:电子设计 2020-12-24 14:02 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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,更改后,实验现象符合预期要求。

以上是FPGA杂记基础篇的第一部分,因文章篇幅所限,本文先分享到这里。后续会有更多的基于FPGA的设计文章,敬请期待……

文章来源:润欣科技Fortune微信公众号


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

    关注

    1656

    文章

    22306

    浏览量

    630880
  • 触发器
    +关注

    关注

    14

    文章

    2051

    浏览量

    63120
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    AMD UltraScale架构:高性能FPGA与SoC的技术剖析

    AMD UltraScale架构:高性能FPGA与SoC的技术剖析 在当今的电子设计领域,高性能FPGA和MPSoC/RFSoC的需求日益增长。AMD的UltraScale架构凭借其创新的技术
    的头像 发表于 12-15 14:35 80次阅读

    2025安路科技AEC FPGA技术沙龙北京站圆满落幕

    2025年11月12日,安路科技AEC FPGA技术沙龙收官站在北京圆满落幕。本次沙龙以“定制未来,共建生态”为主题,聚焦国产FPGA在边缘计算、工业控制及汽车电子等前沿领域的
    的头像 发表于 11-19 17:12 1380次阅读

    【开源FPGA硬件】硬件黑客集结:开源FPGA开发板测评活动全网火热招募中......

    、硬件接入、视频演示得。 报告形式:【小眼睛科技开源FPGA开发板试用】试用体验+自拟标题 试用报告需发布在 电子发烧友FPGA开发者技术社区 ,地址链接如下:https
    发表于 10-29 11:37

    FPGA技术为什么越来越牛,这是有原因的

    最近几年,FPGA这个概念越来越多地出现。例如,比特币挖矿,就有使用基于FPGA的矿机。还有,之前微软表示,将在数据中心里,使用FPGA“代替”CPU,等等。其实,对于专业人士来说,FPGA
    的头像 发表于 08-22 11:39 3873次阅读
    <b class='flag-5'>FPGA</b><b class='flag-5'>技术</b>为什么越来越牛,这是有原因的

    共建生态,米尔将出席2025安路科技FPGA技术沙龙

    在数字化浪潮席卷全球的今天,FPGA技术正成为驱动创新的核心引擎。2025年8月21日,深圳将迎来一场聚焦FPGA技术与产业应用的盛会——2025安路科技
    的头像 发表于 08-14 08:07 769次阅读
    共建生态,米尔将出席2025安路科技<b class='flag-5'>FPGA</b><b class='flag-5'>技术</b>沙龙

    基于FPGA实现FOC算法PWM模块设计

    哈喽,大家好,从今天开始正式带领大家从零到一,在FPGA平台上实现FOC算法,整个算法的框架如下图所示,如果大家对算法的原理不是特别清楚的话,可以先去百度上学习一下,本教程着重介绍实现过程,弱化原理的介绍。那么本文将从PWM模块开始进入FOC算法中去。
    的头像 发表于 07-17 15:21 3158次阅读
    基于<b class='flag-5'>FPGA</b>实现FOC算法<b class='flag-5'>之</b>PWM模块设计

    技术奠定根基,瑞辰数十项专利推动产业创新

    在全球科技竞争日益激烈的今天,谁能把“创新”写进基因,谁就能赢得未来。瑞辰科技有限公司(以下简称“瑞辰”)始终以技术创新为引擎,深耕核心技术研发,累计斩获数十项发明和实用新型专利,
    的头像 发表于 07-16 15:16 1082次阅读
    <b class='flag-5'>技术</b>奠定根基,瑞<b class='flag-5'>之</b>辰数十项专利推动产业创新

    2025智多晶FPGA技术研讨会成功举办

    近日,“2025智多晶FPGA技术研讨会”在武汉成功举办。本次交流会以“智绘新篇 晶质领航”为主题,智多晶专业技术团队在会上揭晓了公司匠心打造的多款FPGA芯片新产品、多项新应用方案。
    的头像 发表于 07-01 18:21 2437次阅读

    PLL技术FPGA中的动态调频与展频功能应用

    随着现代电子系统的不断发展,时钟管理成为影响系统性能、稳定性和电磁兼容性(EMI)的关键因素之一。在FPGA设计中,PLL因其高精度、灵活性和可编程性而得到广泛应用,本文将深入探讨PLL技术FPGA中的动态调频与展频功能应用。
    的头像 发表于 06-20 11:51 2267次阅读
    PLL<b class='flag-5'>技术</b>在<b class='flag-5'>FPGA</b>中的动态调频与展频功能应用

    米尔出席2025安路科技FPGA技术沙龙

    2025年6月12日,由安路科技主办的2025FPGA技术沙龙在南京正式召开,深圳市米尔电子有限公司(简称:米尔电子)作为国产FPGA的代表企业出席此次活动。米尔电子发表演讲,并展出米尔基于安路飞
    的头像 发表于 06-19 08:04 1429次阅读
    米尔出席2025安路科技<b class='flag-5'>FPGA</b><b class='flag-5'>技术</b>沙龙

    FPGA调试方式VIO/ILA的使用

    在Vivado中,VIO(Virtual Input/Output)是一种用于调试和测试FPGA设计的IP核,它允许设计者通过JTAG接口实时读取和写入FPGA内部的寄存器,从而检查设计的运行状态并修改其行为。VIO IP核提供了一个简单易用的接口,使得用户可以轻松地与
    的头像 发表于 06-09 09:32 3211次阅读
    <b class='flag-5'>FPGA</b>调试方式<b class='flag-5'>之</b>VIO/ILA的使用

    2025安路科技AEC-FPGA技术沙龙启航

    2025年度安路科技AEC-FPGA技术沙龙以“定制未来,共建生态”为主题已经全新启航,自2018年举办以来,安路科技FPGA研讨会凭借专业和创新,吸引了无数行业专家、技术精英以及企业
    的头像 发表于 06-05 11:33 906次阅读

    零死角玩转STM32——初级

    本文共4册,由于资料内存过大,分开上传,有需要的朋友可以去主页搜索下载哦~ 《零死角玩转 STM32》系列教程由初级、中级、高级、系统、四个部分组成,更适合初学者,步步为营
    发表于 05-21 13:48

    电子工程师自学速成——入门

    本文共3册,由于资料内存过大,分开上传,有需要的朋友可以去主页搜索下载哦~ 电子工程师自学速成分为:入门、提高和设计,本文为入门,内容包括电子
    发表于 05-15 15:50

    MRAM存储替代闪存,FPGA升级新技术

    电子发烧友网综合报道,日前,莱迪思宣布在FPGA设计上前瞻性的布局,使其能够结合MRAM技术,推出了包括Certus-NX、CertusPro-NX和Avant等多款创新产品。这些FPGA器件采用
    发表于 03-08 00:10 1710次阅读