前言

  • 之前的文章《如何学习verilog,如何快速入门?》中提到了verilog学习,只想传输一个观点:刚开始学习的时候,建议直接通过视频学习,当您有收获时,再去查阅书籍,把它们当成工具书。
  • 这篇文章就通过上一篇文章中提到的方法,演示一下!
  • 本文基于【开源骚客】FPGA超详细入门视频教程学习所得,简单做个笔记!

00. FPGA开发软件的安装

在高校,verilog的教学大都是基于FPGA学习的,所以学习资源很丰富,我们就可以从这个方向入手!而FPGA学习需要一个软件,下面这就请您去安装软件,前面提到的视频教程就有详细的指导!

  • Quartus II 13.1
  • Modelsim
  • Notepad++
  • Vim

01. 我的第一个FPGA工程:点亮led

(1) 一个很简单的verilog设计代码:led.v

在这里,希望初学者,不要有任何质疑:不要纠结东西怎么来的,为什么是这样!因为你在学1+1=2,它不需要你去推敲!

//led.v
module led(output wire     led0       ,//ctrl+D快速复制当前行output wire     led1       ,output wire     led2       ,output wire     led3
);// EP4CE6E22CBN 是FPGA开发板上的型号。assign     led0  = 0;
assign     led1  = 0;
assign     led2  = 0;
assign     led3  = 0;endmodule

(2) Verilog HDL语法

  • 上面这个就是一个很基本的verilog设计代码,下面就简单给读者指出:模块名、端口列表、端口声明等,还有按位操作符之类的基本常识!


  • 在这里,一个基本的verilog设计代码就是上面这样的框架,看完视频的您,是不是豁然开朗!

02.板级验证:下载到板子上

  • 这个环节,是什么意思呢?
  • 简单地讲,前面设计的这个代码led.v的功能是点亮一个led灯,放在板子上就是为了验证这个功能!
  • 这就是验证的时候用JTAG调试接口的部分过程
  • **那要不要买个板子试试呢?**小编觉得都行,其实小编是在咸鱼上买了一个很便宜的,做完了所有的实验,实操的感觉真舒服!

分配管脚pin planner

初次下载代码到FPGA时,需要给下载器安装驱动,Altera USB-Blaster。
驱动目录选择Quartus安装目录下的drivers即可。

03.FPGA验证:test.v

  • 这么说哈,对于ASIC,以前没有IC数字验证,就是用这种方式验证的‘’
  • 随着设计复杂度的提高,
  • 这种方式逐渐被sv、uvm等验证方法学所替代,
  • 晓得了吧。
  • 所以说,学IC验证,学verilog是很有必要的,要体验这个过程!
module   test(input              port_a          ,       //只有wire,没有reg型input             port_b          ,       //只有wire,没有reg型input             port_c          ,       //只有wire,没有reg型output    wire        port_d          ,       //默认为wireoutput wire        port_e          ,output wire        port_f          ,output wire        port_g          ,output wire        port_h
);//assign: 对wire型进行赋值
//always:对reg 型进行赋值assign port_d =      port_a  &   port_b;
assign port_e   =      port_a  |   port_c;
assign port_f   =      ~port_a;
assign port_g   =      port_b ^ port_c;
assign port_h   =      port_a ^~ port_c;endmodule

04. Modelsim 进行仿真(小编在这里用的questasim)


tb_test.v

  • 其实,这里可以和前面的test合并成一个文件,在后面学习完小梅哥的视频,你就会有一个深刻的认识!
`timescale      1ns/1ns       // 时间单位 / 时间精度module  tb_test;reg             test_a;
reg             test_b;
reg             test_c;wire         rslt_d;
wire            rslt_e;
wire            rslt_f;
wire            rslt_g;
wire            rslt_h;// initial 赋值的信号,必须定义成reg型
initial begintest_a =      1;      // 在0时刻赋初值test_b    =      1;      test_c  =      1;  #5test_a    =      0;      // 在5时刻赋初值test_b    =      1;      test_c  =      1;  #5test_a    =      0;      // 在10时刻赋初值test_b   =      0;      test_c  =      0;
endtest     test_inst(.port_a           (test_a         ),      //只有wire,没有reg型.port_b           (test_b         ),      //只有wire,没有reg型.port_c           (test_c         ),      //只有wire,没有reg型.port_d           (rslt_d         ),      //默认为wire.port_e            (rslt_e         ),.port_f           (rslt_f         ),.port_g           (rslt_g         ),.port_h           (rslt_h         )
);                    endmodule

wave

后记

  • 查看往期文章,请点击跳转
    《IC前端数字验证导学》
    《如何学习verilog,如何快速入门?》
  • 如需长期追更,可以扫码关注下面这个公众号

verilog学习:一个简单的入门verilog例子相关推荐

  1. 一个简单的三层架构例子(.NET入门)

    最近开始学习.NET 用的是c# 目前要用三层架构的模式开发一个简单的图书管理系统,不过以为刚接触这门技术.做起来分外吃力,甚至连究竟要写些什么都不清楚. 于是乎上网到处找寻三层架构的基础入门知识,终 ...

  2. 一个简单的epoll测试例子

    一个简单的epoll测试例子 一段简单的epoll测试例子,编译运行后可以直接用浏览器访问localhost来测试. 1 #include <unistd.h> 2 #include &l ...

  3. Verilog学习笔记(5):Verilog高级程序设计

    文章目录 1.数字电路系统设计的层次化 2.典型电路设计 2.1加法器树乘法器 2.2Wallace树乘法器 2.3复数乘法器 2.4 FIR滤波器设计 2.5 片内存储器的设计 2.6 FIFO设计 ...

  4. linux下glew例子,一个简单的GLSL Shader例子

    本例子选自OpenGL Shading Language中的第一个Shader例子,使用颜色平滑地表示一个表面的温度.温度及其颜色的范围在应用程序中进行设置. //先看顶点着色器temp.vert: ...

  5. 一个简单的规则引擎例子

    本例使用的规则引擎包是RulesEngine,关于RulesEngine的介绍,请自行补充,这里只是一个极简单使用场景. 例子大体就是用户有一些优惠券,系统会根据用户订单情况,筛选可以使用的优惠券供用 ...

  6. 说一下dubbo项目简单的搭建过程_dubbo学习(1)--简单的入门搭建实例

    1 简介 dubbo是一个分布式服务框架,由阿里巴巴的工程师开发,致力于提供高性能和透明化的RPC远程服务调用.可惜的是该项目在2012年之后就没有再更新了,之后由当当基于dubbo开发了dubbox ...

  7. 一个简单的马尔可夫过程例子

    什么是马尔可夫过程(Markov Process) 要说什么是马尔可夫过程,首先必须讲讲什么是随机过程(Stochastic Process). 設 (Ω,,P) (\Omega, \mathcal ...

  8. 如何写一个简单java接口的例子(内容详细,适合初学者)

    这里说一个简单的java接口的小例子(一个接口类,两个实现类) 先新建一个动态web工程: 我的项目目录是这样子的(接口写完之后目录) 先在test0609_test1包下new 一个interfac ...

  9. 一个简单的BP神经网络例子

    原创文章,转载请说明来自<老饼讲解神经网络>:bp.bbbdata.com 关于<老饼讲解神经网络>: 本网结构化讲解神经网络的知识,原理和代码. 重现matlab神经网络工具 ...

最新文章

  1. 复习下mybatis 中 useGeneratedKeys 和 keyProperty 含义
  2. COGNOS8培训之四(疑点解析)
  3. spark 朴素贝叶斯
  4. Renascence架构原理——遗传规划算法
  5. SAP CRM product determination debug
  6. 【SAP HANA】关于SAP HANA中带层次结构的Analytic View创建、激活状况下在系统中生成对象的研究...
  7. UVA10424 Love Calculator【水题】
  8. Exam 70-462 Administering Microsoft SQL Server 2012 Databases 复习帖
  9. Vue中点击复制文本功能
  10. 简易支付系统的架构设计
  11. linux系统bcast,Linux系统下取IP地址的几种方法
  12. dts 和 dtsi
  13. Win7: Logoff被用户Lock的屏幕
  14. ALG 求单峰的位置
  15. 如何读取STL文件?
  16. Vue3+TS 快速上手 (尚硅谷)
  17. UTC时间与北京时间
  18. 利用MSCNN实现人群密度监测
  19. 大学计算机专业毕业之后,从事人工智能或大数据,继续考研还是参加工作?
  20. 考评系统学到的UI设计理念

热门文章

  1. 算法mips与mcps 的分析
  2. 蓝牙BLE设备连接与通信
  3. 关于移动端IOS input弹起键盘时,引起高度问题
  4. Excel VBA:设置单元格边框
  5. 新特性之MAPI over HTTP \ 配置 MAPI over HTTP
  6. 字体大宝库:12款好看的手写艺术字体免费下载
  7. swagger-ui导出word接口文档
  8. Mask Scoring RCNN训练自己的数据
  9. zookeeper Unreasonable length错误导致无法启动
  10. 【Educoder】Python学习记录(二)