verilog学习:一个简单的入门verilog例子

前言

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

00. FPGA开发软件的安装

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

  • Quartus II 13.1
  • Modelsim
  • Notepad++
  • Vim
    verilog学习:一个简单的入门verilog例子_第1张图片

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学习:一个简单的入门verilog例子_第2张图片
verilog学习:一个简单的入门verilog例子_第3张图片

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

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

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

分配管脚pin planner

在这里插入图片描述

初次下载代码到FPGA时,需要给下载器安装驱动,Altera USB-Blaster。
驱动目录选择Quartus安装目录下的drivers即可。
verilog学习:一个简单的入门verilog例子_第4张图片

verilog学习:一个简单的入门verilog例子_第5张图片

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			,		//默认为wire
		output	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)

verilog学习:一个简单的入门verilog例子_第6张图片
verilog学习:一个简单的入门verilog例子_第7张图片

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 begin
		test_a	=		1;		// 在0时刻赋初值
		test_b	=		1;		
		test_c	=		1;	
		#5
		test_a	=		0;		// 在5时刻赋初值
		test_b	=		1;		
		test_c	=		1;	
		#5
		test_a	=		0;		// 在10时刻赋初值
		test_b	=		0;		
		test_c	=		0;	
end

test		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

verilog学习:一个简单的入门verilog例子_第8张图片

后记

  • 查看往期文章,请点击跳转
    《IC前端数字验证导学》
    《如何学习verilog,如何快速入门?》

  • 如需长期追更,可以扫码关注下面这个公众号

你可能感兴趣的:(IC前端数字验证,verilog,verilog)