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


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. 第一课 Markdown 实操

    1.Markdown (#加空格) 二级标题 (##加空格) 三级标题 (###加空格) 四级标题 (####加空格) 2.字体 Hello world 加粗(字体2边加**) Hello world ...

  2. git 代码托管常用代码

    一.git全局账号登录 (1)全局登录账号和密码 git config --global user.name "xxx" git config --global user.emai ...

  3. 比较有趣的C语言小程序

    1.判断是否是闰年: #include <stdio.h> int main(void) {     int year, a;     printf("Please enter  ...

  4. bzoj 3532

    很好的一道题,对理解最小割有很大帮助 首先,不难发现本题与网络流24题中的某一道很类似,我们可以先跑一次dp求出每个节点的LIS,然后拆点,拆出的两点之间连流量为删除的代价的边,剩下的点之间按dp的转 ...

  5. new关键字的作用

    new关键字会进行如下的操作: 1. 创建一个空的简单JavaScript对象(即`{}`): 2. 为步骤1新创建的对象添加属性`__proto__`,将该属性链接至构造函数的原型对象 : 3. 将 ...

  6. 项目实训DAY7

    今天与昨天一样,查论文,并美化了一下功能界面的样式.

  7. spring中.xml配置文件头部

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  8. Spring系列之验证-14

    目录 Java Bean 验证 Bean 验证概述 配置 Bean 验证提供程序 注入验证器 配置一个`DataBinder` Spring MVC 3 验证 Java Bean 验证 Bean 验证 ...

  9. nginx日志分析--可视化

    1. 安装依赖 yum install glib2 glib2-devel GeoIP-devel ncurses-devel zlib zlib-devel -y wget https://gith ...

  10. php 验证身份证合法性

    function checkIdcard($num = '') { $length = strlen($num); if ($length == 15) { //如果是15位身份证 //15位身份证没 ...