verilog学习:一个简单的入门verilog例子
前言
- 之前的文章《如何学习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例子相关推荐
- 一个简单的三层架构例子(.NET入门)
最近开始学习.NET 用的是c# 目前要用三层架构的模式开发一个简单的图书管理系统,不过以为刚接触这门技术.做起来分外吃力,甚至连究竟要写些什么都不清楚. 于是乎上网到处找寻三层架构的基础入门知识,终 ...
- 一个简单的epoll测试例子
一个简单的epoll测试例子 一段简单的epoll测试例子,编译运行后可以直接用浏览器访问localhost来测试. 1 #include <unistd.h> 2 #include &l ...
- Verilog学习笔记(5):Verilog高级程序设计
文章目录 1.数字电路系统设计的层次化 2.典型电路设计 2.1加法器树乘法器 2.2Wallace树乘法器 2.3复数乘法器 2.4 FIR滤波器设计 2.5 片内存储器的设计 2.6 FIFO设计 ...
- linux下glew例子,一个简单的GLSL Shader例子
本例子选自OpenGL Shading Language中的第一个Shader例子,使用颜色平滑地表示一个表面的温度.温度及其颜色的范围在应用程序中进行设置. //先看顶点着色器temp.vert: ...
- 一个简单的规则引擎例子
本例使用的规则引擎包是RulesEngine,关于RulesEngine的介绍,请自行补充,这里只是一个极简单使用场景. 例子大体就是用户有一些优惠券,系统会根据用户订单情况,筛选可以使用的优惠券供用 ...
- 说一下dubbo项目简单的搭建过程_dubbo学习(1)--简单的入门搭建实例
1 简介 dubbo是一个分布式服务框架,由阿里巴巴的工程师开发,致力于提供高性能和透明化的RPC远程服务调用.可惜的是该项目在2012年之后就没有再更新了,之后由当当基于dubbo开发了dubbox ...
- 一个简单的马尔可夫过程例子
什么是马尔可夫过程(Markov Process) 要说什么是马尔可夫过程,首先必须讲讲什么是随机过程(Stochastic Process). 設 (Ω,,P) (\Omega, \mathcal ...
- 如何写一个简单java接口的例子(内容详细,适合初学者)
这里说一个简单的java接口的小例子(一个接口类,两个实现类) 先新建一个动态web工程: 我的项目目录是这样子的(接口写完之后目录) 先在test0609_test1包下new 一个interfac ...
- 一个简单的BP神经网络例子
原创文章,转载请说明来自<老饼讲解神经网络>:bp.bbbdata.com 关于<老饼讲解神经网络>: 本网结构化讲解神经网络的知识,原理和代码. 重现matlab神经网络工具 ...
最新文章
- 复习下mybatis 中 useGeneratedKeys 和 keyProperty 含义
- COGNOS8培训之四(疑点解析)
- spark 朴素贝叶斯
- Renascence架构原理——遗传规划算法
- SAP CRM product determination debug
- 【SAP HANA】关于SAP HANA中带层次结构的Analytic View创建、激活状况下在系统中生成对象的研究...
- UVA10424 Love Calculator【水题】
- Exam 70-462 Administering Microsoft SQL Server 2012 Databases 复习帖
- Vue中点击复制文本功能
- 简易支付系统的架构设计
- linux系统bcast,Linux系统下取IP地址的几种方法
- dts 和 dtsi
- Win7: Logoff被用户Lock的屏幕
- ALG 求单峰的位置
- 如何读取STL文件?
- Vue3+TS 快速上手 (尚硅谷)
- UTC时间与北京时间
- 利用MSCNN实现人群密度监测
- 大学计算机专业毕业之后,从事人工智能或大数据,继续考研还是参加工作?
- 考评系统学到的UI设计理念