声明(叠甲):鄙人水平有限,本文章仅供参考。


1.环境

推荐使用 Ubuntu20.04这是我使用多个版本中最好用的一个,相关安装教程可以自行上网搜索这不再赘述,但要补充的一点的是源推荐使用中科大的源。


2.IDE

代码编写工具就因人而异了,我个人是推荐vscode的,相比vim来说,它上手简单,插件种类多且好用。并在此推荐几个我个人一直使用的几个插件:

Ayu(主题插件) vscode-icons-mac(文件主题插件) C/C++(C/C++补全与高亮的插件) Chinese(中文插件) Git Grap(git可视化插件)Verilog-HDL/SystemVerilog/Bluespec SystemVerilog(verilog补全与高亮的插件)Bracket Pair Colorizer(用于区分不同括号的插件,很好用强推)


3.相关工具

这推荐的工具都为开源免费的工具,仅供参考,你也可以选择你熟悉工具的Linux版本,如Vivado的Linux版,而且这篇将只会介绍有哪些工具,不会进行使用的教学,具体教程可以移步到我其它的文章。

编译工具:verilator

看波形:gtkwave

综合工具:yosys


4.虚拟板卡:nvboard

NVBoard(NJU Virtual Board)是南京大学开发的, 用于教学的虚拟FPGA板卡项目, 可以在RTL仿真环境中提供一个虚拟板卡的界面, 支持拨码开关, LED灯, VGA显示等功能, 在速度要求不高的场景下可完全替代真实的FPGA板卡(毕竟不是每人身边都有一块FPGA)。相关的使用教程可见其给的案例、源代码和本文的第5点。


5.工作流

(1) 编写verilog代码(verilog教程推荐:菜鸟教程)

(2) 使用verilator进行编译排除警告与错误,一遍为便于项目的管理一般来说会进行编写一个Makefile进行管理。

(3) 使用C++或者systemc编写测试案例即仿真,再使用verilator生成可执行文件,运行其生成波形文件和我关心的log。

(4) 参看终端的log和使用gtkwave查看生成的波形文件(即.vcd文件),排除不符合预期的行为。

(5) 使用yosys参看生成的RTL视图,是否与预期符合,是否需要优化。

(6) 接入NVBoard查看现象是否符合预期。


这里给个流水灯的案例。

https://gitee.com/lh-luoke/linux-fpga


6.推荐

最后再推荐几个相关学习的好网站

HDLBits

中科大的在线verilog OJ平台

南京大学的数电实验

一生一芯

Linux下学习FPGA的更多相关文章

  1. 在 Linux 下学习 C 语言有什么好处?

    作者:宅学部落链接:https://www.zhihu.com/question/23893390/answer/832610610来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...

  2. Linux下学习摄像头使用

    刚接触Linux硬件驱动有关的项目,配置摄像头经历的一些操作 (这篇文章是刚接触Linux下V4L时作为记录记下的,感觉只有几个命令还有参考作用) 一 确定摄像头种类 确定是否符合UVC标准协议,一般 ...

  3. Linux下学习王爽老师的汇编语言

    坐起来非常容易,找到这条路确实非常曲折,为了后来的同志们不再纠结,特记录如下: 这几天看汇编语言时,很多人都推荐王爽老师的<汇编语言>,老师的书的确写的很好,但是讲的是ms的汇编,但是总不 ...

  4. 2018.3.26 Linux下学习命令

    Linux下的终端文件颜色说明 ---color[=WHEN] 用色彩辨别文件类型 WHEN 可以是'never'.'always'或'auto'其中之一 白色:表示普通文件 蓝色:表示目录 绿色:表 ...

  5. 在Linux下开始C语言的学习

    为什么要在linux下学习C语言? linux下可以体验到最纯粹的C语言编程,可以抛出其他IDE的影响 环境配置简单,一条命令就足够.甚至对于大多数linux发行版本,都已经不需要配置C语言的环境 查 ...

  6. Linux 下从头再走 GTK+-3.0 (一)

    原本由于项目需求在 Linux 下学习过一段时间的 GTK+2.0 图形开发,时隔一段时间,想真正深入学习一下 GTK . 这次直接从头学习 GTK+-3.0 ,并写下博文便于日后查看,也方便新手入门 ...

  7. 别出心裁的Linux系统调用学习法

    别出心裁的Linux系统调用学习法 操作系统与系统调用 操作系统(Operating System,简称OS)是计算机中最重要的系统软件,是这样的一组系统程序的集成:这些系统程序在用户对计算机的使用中 ...

  8. MongoDB学习笔记—Linux下搭建MongoDB环境

    1.MongoDB简单说明 a MongoDB是由C++语言编写的一个基于分布式文件存储的开源数据库系统,它的目的在于为WEB应用提供可扩展的高性能数据存储解决方案. b MongoDB是一个介于关系 ...

  9. Linux学习心得之 Linux下命令行Android开发环境的搭建

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Linux学习心得之 Linux下命令行Android开发环境的搭建 1. 前言2. Jav ...

  10. Linux学习心得之 Linux下ant安装与使用

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Linux学习心得之 Linux下ant安装与使用 1. 前言2. ant安装3. 简单的a ...

随机推荐

  1. SpringMVC-nfjh

    SpringMVC springmvc项目创建 1.使用maven创建web项目结构 2.补充更改结构 3.springmvc-config.xml 1)添加包扫描(context命名空间) 2)添加 ...

  2. 挖坑——未完成题目列表QwQ

    OI一些的小计划: 日拱一卒,功不唐捐! Unfinished luogu P2814 家谱 Luogu P2076 聚会 luogu P2212 Watering the Fields  草坪上有N ...

  3. ssh免密码登录服务器

    A机为本地主机(即用于控制其他主机的机器) B机为远程主机(即被控制的机器server)B机:192.168.3.145 假如A机无密码登录B机器     A机上的命令: 1,ssh-keygen - ...

  4. vue中关于get传参数为数组的解决方法

    按理来说,get请求方式是没有数组的,get请求方式带参数都是字符串,需要和后端协商是用某个标识符分割开,例如"|"   ",". 当然如果需要数组的话,也能解 ...

  5. python 浮点除法

    昨天晚上久违地去打了次div2 一年没打,挂得很惨 早上起来试着用python写一遍唯一写出来的a题 然后发现了一个奇怪的现象 代码如下(为了方便观察已经改过了,不是解题的代码) import sys ...

  6. SQL IIF函数的使用 判断为空数据不显示的问题

    先说说IIF函数 IIF函数 需要一个条件 两个值 当条件满足的时候 执行第一个值 条件不满足的时候 执行第二个值 IIF(判断条件,值1,值2) 今天判断数据的时候 发现当值为NULL或者为'    ...

  7. excel的几个常用方法

    --笔记开始: 1.if(条件,真值,假值),类似于编程语言中的三元运算符.条件为真时返回真值,条件为假时返回假值. 2.match(目标值,查找区域,查找类型),一般查找类型为0(等值查找),查找区 ...

  8. Git基础使用和在UE中使用的方法

    Git使用介绍 Git使用 1.基础知识 pwd 显示目前的工作目录 print work directory ls 显示当前路径下所有文件 mkdir 产生新的文件夹make directory t ...

  9. uni-app中调用高德地图去设置点和轨迹

    盒子部分 <view style="width: 100%; height: 100%" id="busContainer"> </view& ...

  10. 2003031120—廖威—Python数据分析第三周作业—numpy的简单操

    项目 内容 课程班级博客链接 https://edu.cnblogs.com/campus/pexy/20sj 这个作业要求链接 https://edu.cnblogs.com/campus/pexy ...