【FPGA零基础学习之旅#2】“二选一多路器”简单实例

欢迎来到FPGA专栏~"二选一多路器"简单实例


  • ☆* o(≧▽≦)o *☆~我是小夏与酒
  • 博客主页:小夏与酒的博客
  • 该系列文章专栏:FPGA学习之旅
  • 文章作者技术和水平有限,如果文中出现错误,希望大家能指正
  • 欢迎大家关注! ❤️
    FPGQ2

CSDN

FPGA"二选一多路器"实例目录

  • 一、实例介绍
    • 二选一多路器
    • 项目文件夹
  • 二、程序编写
    • 代码编写
    • RTL viewer
    • University Program VWF
  • 三、Modelsim仿真
    • 编写测试激励文件
    • RTL Simulation
    • Gate Level Simulation
  • 四、程序烧录
    • IO分配
    • 安装下载驱动
    • 程序烧录和结果展示

遇见未来

Quartus II 13.0安装和破解:
对于此学习之旅,使用的开发软件是Quartus II 13.0
对于Quartus II 13.0和破解工具的获取可以点击该链接前往下载:【软件工具】Quartus II13.0带modelsim集成包
我也将需要下载的所有内容打包到了百度网盘,需要的在此获取:
Quartus 13.0安装包带Modelsim:
链接:https://pan.baidu.com/s/10TX3rcZ9MGx26OCA9Ltfxg
提取码:eais
Quartus 13.0安装教程和破解工具:
链接:https://pan.baidu.com/s/1p8Z2SoyFpLMUizstzCIHUw
提取码:af5i
对于该开发软件的安装和破解的方法直接参考下载内容中的安装和破解教程即可,非常详细,在此不再过多介绍。
注意: 安装路径中不要出现中文空格!否则会导致Quartus II和仿真软件使用不了或者出错!

一、实例介绍

该系列文章只是作为学习记录,并无其余用途。所发文章内容是经过自己本身操作和记录整理得来。
本篇文章主要记录二选一多路器的实现、仿真和烧录过程

二选一多路器

二选一多路器的简单示例图如下:
【FPGA零基础学习之旅#2】“二选一多路器”简单实例_第1张图片

项目文件夹

项目文件夹目录:
【FPGA零基础学习之旅#2】“二选一多路器”简单实例_第2张图片

二、程序编写

代码编写

Verilog HDL File中的代码如下:

module mux2(
//端口列表
	a,  //key0
	b,  //key1
	sel,//key2
	out //1:led熄灭  0:led点亮
);

//端口类型定义
	input a;
	input b;
	input sel;
	
	output out;
	
//功能设计
	assign out = sel?b:a;
	//assign out = (sel == 1)?:a;

endmodule

RTL viewer

全编译之后,我们可以在RTL viewer中查看其硬件逻辑电路
【FPGA零基础学习之旅#2】“二选一多路器”简单实例_第3张图片
展示结果如下:
【FPGA零基础学习之旅#2】“二选一多路器”简单实例_第4张图片

University Program VWF

Ctrl+N并选择University Program VWF
【FPGA零基础学习之旅#2】“二选一多路器”简单实例_第5张图片
其中,对a、b和sel设置如下:
【FPGA零基础学习之旅#2】“二选一多路器”简单实例_第6张图片
【FPGA零基础学习之旅#2】“二选一多路器”简单实例_第7张图片
【FPGA零基础学习之旅#2】“二选一多路器”简单实例_第8张图片
功能仿真波形:
【FPGA零基础学习之旅#2】“二选一多路器”简单实例_第9张图片
时序仿真波形:
【FPGA零基础学习之旅#2】“二选一多路器”简单实例_第10张图片

三、Modelsim仿真

编写测试激励文件

将测试激励文件保存到项目对应的testbench文件夹下,代码如下:

`timescale 1ns/1ps

module mux2_tb();
	
	//激励源
	//激励信号定义,对应连接到待测试模块的输入端口
	reg s1;  //a
	reg s2;  //b
	reg s3;  //sel
	
	//待检测信号定义,对应连接到待测试模块的输出端口
	wire Light1;  //out

	//例化待测试模块
	mux2 mux2_inst0(
	//端口列表
		.a(s1),
		.b(s2),
		.sel(s3),
		.out(Light1)
	);
	
	//产生激励 
	initial begin
	s1 = 0; s2 = 0; s3 = 0;
	
	#100;
	s1 = 1; s2 = 0; s3 = 0;
	
	#100;
	s1 = 0; s2 = 1; s3 = 0;
	
	#100;
	s1 = 1; s2 = 1; s3 = 0;
	
	#100;
	s1 = 0; s2 = 0; s3 = 1;
	
	#100;
	s1 = 1; s2 = 0; s3 = 1;
	
	#100;
	s1 = 0; s2 = 1; s3 = 1;
	
	#100;
	s1 = 1; s2 = 1; s3 = 1;
	
	#100;
	$stop;
	
	end


endmodule

RTL Simulation

将仿真脚本设置完成之后,进行前方真,也叫功能仿真
【FPGA零基础学习之旅#2】“二选一多路器”简单实例_第11张图片
仿真结果如下:
【FPGA零基础学习之旅#2】“二选一多路器”简单实例_第12张图片

Gate Level Simulation

对功能仿真结果无误且符合预期之后,进行后仿真,也叫做门级仿真
【FPGA零基础学习之旅#2】“二选一多路器”简单实例_第13张图片
选择第一个时序模型:慢速工作、环境温度为 85℃、内核供电 1.2V 的情况进行仿真:
【FPGA零基础学习之旅#2】“二选一多路器”简单实例_第14张图片
仿真结果如下:
【FPGA零基础学习之旅#2】“二选一多路器”简单实例_第15张图片
注意注意❗如果在进行门级仿真时没有提示进行时序模型选择并且仿真结果没有延迟出现的话,请参考如下步骤进行设置:
【FPGA零基础学习之旅#2】“二选一多路器”简单实例_第16张图片
【FPGA零基础学习之旅#2】“二选一多路器”简单实例_第17张图片
【FPGA零基础学习之旅#2】“二选一多路器”简单实例_第18张图片
上述情况解决办法参考链接:【Modelsim常见问题】ModelSim无时序仿真选项,后仿真波形无延迟

四、程序烧录

IO分配

查看LED和按键对应的引脚分配:
【FPGA零基础学习之旅#2】“二选一多路器”简单实例_第19张图片
【FPGA零基础学习之旅#2】“二选一多路器”简单实例_第20张图片

Pin Planner中进行IO分配:

【FPGA零基础学习之旅#2】“二选一多路器”简单实例_第21张图片
上述步骤完成之后,就可以生成烧写文件JIC了,并准备下载到开发板中。

安装下载驱动

开发板与电脑连接需要安装2个驱动,分别是USB转串口驱动USB Blaster下载器驱动

对比两驱动的功能如下:

USB转串口驱动 USB Blaster驱动
实现USB转串口功能 给FPGA下载程序时使用
实现FPGA和电脑通过串口进行通信 不安装无法下载程序到FPGA

把开发板连接到电脑上,使用方口Type-B USB数据线连接电脑和开发板,如图:
【FPGA零基础学习之旅#2】“二选一多路器”简单实例_第22张图片

接好之后不用管电源开关的位置,打开设备管理器进行查看:
【FPGA零基础学习之旅#2】“二选一多路器”简单实例_第23张图片

黄色感叹号表示设备驱动不正常,这个时候我们就需要手动安装该设备驱动

安装CH340驱动:
因为我之前使用其他开发板和设备的时候就已经安装过CH340的驱动了,所以该设备驱动正常。
如果没有安装该驱动的话,可以在网上搜索并下载该驱动安装即可

安装USB-Blaster驱动:
选中USB-Blaster,单击鼠标右键,选择更新驱动程序。在弹出的界面中,选择浏览计算机以查找驱动程序软件。

在弹出的窗口中,点击浏览,将路径定位到电脑上 Quartus II 软件的安装目录下的drivers 文件夹勾选“包括子文件夹”选项,然后点击下一步,等待安装。安装成功之后如下:

【FPGA零基础学习之旅#2】“二选一多路器”简单实例_第24张图片

程序烧录和结果展示

将开发板和电脑连接,配置好对应的文件和设置之后,点击Start按钮即可烧写程序:
【FPGA零基础学习之旅#2】“二选一多路器”简单实例_第25张图片
等待片刻,当Progress达到100%时,程序烧写成功
【FPGA零基础学习之旅#2】“二选一多路器”简单实例_第26张图片
烧写成功之后,对开发板重新上电,之后就可以使用开发板上的按键进行测试了:

【FPGA零基础学习之旅#2】“二选一多路器”简单实例_第27张图片

csdn

结尾


  • ❤️ 感谢您的支持和鼓励!
  • 您可能感兴趣的内容:
  • 【FPGA零基础学习之旅#1】 AC620V2开发板测试
  • 【Go黑帽子】使用Golang编写一个TCP扫描器(基础篇)
  • 【Arduino TinyGo】【最新】使用Go语言编写Arduino-环境搭建和点亮LED灯
  • Labview机器视觉-USB摄像头识别一维码(条形码)- 学习记录
    遇见未来

你可能感兴趣的:(FPGA学习之旅,fpga开发,学习,开发语言,硬件工程)