项目一:3-8译码器的设计与实现(FPGA)

news2024/10/24 13:19:37

本文以Altera公司生产的Cyclone IV系列的EP4CE15F17C8为主芯片的CRD500开发板作为项目的硬件实现平台,并以Quarter 18.1和ModelSim为开发工具和仿真工具。

目录

一、3-8译码器工作原理

二、设计步骤

1、创建工程文件夹和编辑设计文件

(1)新建文件夹decoder_38

(2)输入源程序

(3)文件存盘

2、创建工程 

(1)工程名、实体名

(2)将设计文件加入工程,单击下图的”···“按钮。 

(3)选择目标芯片,选择CRD500开发板FPGA芯片EP4CE15F17C8。

(4)选择综合器和仿真器类型

(5)结束设置

3、编译工程

(1)编译前的设置

(2)编译

4、仿真测试

(1)方法一:基于Quartus 自身工具模块的仿真

(2)基于modelsim_altera的仿真

5、引脚锁定与.sof文件下载

(1)引脚锁定

(2)选择编程模式和配置

三、板载测试


一、3-8译码器工作原理

        3个输入信号进行译码,得到8个输出状态,输入与输出的关系如下表所示,表中1表示高电平,0表示低电平。

二、设计步骤

1、创建工程文件夹和编辑设计文件

(1)新建文件夹decoder_38

        路径:D:\Verilog\txhFPGA\decoder_38

        注:文件夹名不能包含中文

(2)输入源程序

        选择菜单“File” --> "New"

        选择“Verilog HDL File”

        输入程序:

//3_8译码器程序,key1,key2,key3为译码器的输入,out为译码器的输出
module decoder_38(out, key_in);
	output[7:0] out;            // 说明信号out的流向
	input[2:0] key_in;          // 说明信号key_in的流向
	reg[7:0] out;               // 申明信号类型
always @(key_in)                // 定义always块
	begin
		case(key_in)
			3'd0: out=8'b11111110;    //key_in = 000, out[0]为低电平
			3'd1: out=8'b11111101;
			3'd2: out=8'b11111011;
			3'd3: out=8'b11110111;
			3'd4: out=8'b11101111;
			3'd5: out=8'b11011111;
			3'd6: out=8'b10111111;
			3'd7: out=8'b01111111;
		endcase
	end
endmodule

(3)文件存盘

        快捷键“CTRL+S”保存文件,找到要保存的文件夹D:\Verilog\txhFPGA\decoder_38

文件名应与实体名保持一致,故文件名命名为decoder_38.v。保存后弹出对话框,点击“Yes”。

2、创建工程 

(1)工程名、实体名

(2)将设计文件加入工程,单击下图的”···“按钮。 

(3)选择目标芯片,选择CRD500开发板FPGA芯片EP4CE15F17C8。

(4)选择综合器和仿真器类型

若选”None“,表示选择Quartus II 自带的综合器与仿真器。

对于简单设计项目,激励信号有规律,可选自带的仿真工具产生波形激励文件,作为信号源进行仿真。而对于复杂项目,激励信号无规律或很复杂,此时须选择第三方仿真软件(ModelSim_Altera)

(5)结束设置

显示本工程项目的层次结构和各层次的实体名

建立工程后,可使用”Project“菜单中的”Add/Remove Files in Project···“选项页在工程中设计、添加或删除其他文件。

或者:

3、编译工程

(1)编译前的设置

选择目标器件

选择配置器件的编程配置方式

"Active Serial"这种方式指对专用配置器件(如项目中使用EPCS16)进行配置用的编程方式,而PC对此FPGA的直接配置方式都是JTAC方式。在”Configuration device“项目中选择配置芯片为”EPCS16“。

选择编译后的输出文件格式(可选)。

选择目标器件闲置引脚的状态(可选)

(2)编译

或者

若编译成功,则:

4、仿真测试

(1)方法一:基于Quartus 自身工具模块的仿真

第一步:建立激励文件

第二步:设置仿真时间区域

第三步:保存波形文件。使用”File“菜单中的”Save As“项,将decoder_38.vwf的波形文件存入工程文件夹D:\Verilog\txhFPGA\decoder_38中。

第四步:输入信号节点,将3-8译码器的端口信号选入波形编辑器中。

选择完毕后按”OK“。

第五步:编辑输入波形(输入激励信号)。

单击选中图中的key_in[0],使之变成蓝色,再单击时钟,在”Clock“对话框中设置周期为20us、占空比为50%的周期信号。

得到key_in[0]的波形

同理将key_in[1]设置为周期为40us、占空比为50%的周期信号;

在key_in[2]的波形编辑区,前30us设置为低电平,再设置30us为高电平,40us为低电平。

仿真测试:

(2)基于modelsim_altera的仿真

第一步:编写激励文件

创建testbench激励文件模板。

打开模板文件,修改保存,得到激励文件。选择”File“菜单中的”Open“项,打开D:\Verilog\txhFPGA\decoder_38\simulation\modelsim\decoder_38.vt文件(创建的模板默认存放位置,且文件名自动命名)

激励脚本内容: 

`timescale 1 ps/ 1 ps
module decoder_38_vlg_tst();

//reg eachvec;
// test vector input registers
reg [2:0] key_in;
// wires                                               
wire [7:0]  out;

// assign statements (if any)                          
decoder_38 i1 (
// port map - connection between master ports and signals/registers   
	.key_in(key_in),
	.out(out)
);
initial	//key_in[2]                                         
begin                                                                      
	key_in[2] = 1'b0;
	key_in[2] = #29440000 1'b1;
	key_in[2] = #30720000 1'b0;	
end                                                       

initial	//key_in[1]
begin
	repeat(2)
	begin
		key_in[1] = 1'b0;
		key_in[1] = #20000000 1'b1;
		# 20000000;
	end
	key_in[1] = 1'b0;
end

initial	//key_in[0]
begin
	repeat(5)
	begin
		key_in[0] = 1'b0;
		key_in[0] = #10000000 1'b1;
		# 10000000;
	end
end                                                    
endmodule

第二步:设置仿真环境参量

依据激励文件修改参量,将”Time scale“栏设置为”1ps“(与激励文件一致)

找到并添加激励文件,填写激励文件名、激励文件中的module名、激励文件中的实例名”i1“,选中”End simulation at"并填写数字100,单位为”us"(与激励文件一致)。 

ModelSim仿真

启动仿真,观察仿真结果(单击后跳转ModelSim,将自动获得仿真结果)

若是第一次使用Modelsim-Altera,需建立Quartus Prime和Modelsim的链接。

设置仿真文件的格式与目录

 

5、引脚锁定与.sof文件下载

(1)引脚锁定

引脚锁定后,必须再编译一次,将引脚信息编译进下载文件中。在编译后产生的文件中,.sof格式的文件可直接下载到FPGA中运行。

引脚的绑定依据:

(1)FPGA与CRD500开发板上5个按键的连接关系:

信号名称rstkey1key2key3key4
FPGA引脚P14T10P11N11N12
功能键按下——高电平;不按——低电平
(2)8个LED灯与FPGA连接关系:
信号名称Led(0)Led(1)Led(2)Led(3)Led(4)Led(5)Led(6)Led(7)
FPGA引脚R11T11R12T12R13T13R14T14
功能1——亮;0——灭

(2)选择编程模式和配置

为将编译产生的.sof文件配置进FPGA中进行测试,首先将系统连接好,开发板上电,后在“Tool”菜单中选择“Programmer”。在“Mode”栏选择编程模式为“JTAG”,单击选中出现的下载文件右侧的第一个小方框,打勾。若此文件未出现,则点击左侧的“Add File”,选择配置文件decoder_38.sof。

单击“Hardware Setup”后,在弹出的对话框中选择硬件,然后单击“Close”按钮。

若未出现硬件,则参考:

 quartus烧程序的时候programmer不显示硬件怎么回事_quartus检测不到板子-CSDN博客

再单击左侧的“Start”项。

当右侧的“Process”栏显示为100%,则表示编程成功。

三、板载测试

板载测试就是由三个按键产生000~111共8组输入信号,通过指示灯的亮与灭判断3-8译码器输出的准确性。

当未按键时,key_in=000,此时译码器输出“11111110”,即LED0=0(LED1灭,其余亮)

当按下key1时,key_in=001,此时LED2=0(LED1灭,其余亮)

……

当同时按下key1、 key2、 key3,key_in=111,此时译码器输出“01111111”,即LED7灭,其余亮。

板载测试结果如上表结论一致,由此验证了3-8译码器输出的准确性,至此该项目完成!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2222413.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(三)将PaddleOCR编译成dll通过Java调用实现ocr识别

说明: 本文编译的PaddleOCR版本:v2.8.1,关于windows下如何生成c项目及如何编译PaddleOCR请参照我的上一篇文章《(二)Windows通过vs c编译PaddleOCR-2.8.1-CSDN博客》,本文是上一个篇文章的延伸。 背景&…

douyin uid转sec_uid 各种进行转换

第一步输入uid: 进行转换: 同时支持接口转换,批量转换,是一个很实用的工具 uid转sec_uid

微信小程序上传图片添加水印

微信小程序使用wx.chooseMedia拍摄或从手机相册中选择图片并添加水印&#xff0c; 代码如下&#xff1a; // WXML代码&#xff1a;<canvas canvas-id"watermarkCanvas" style"width: {{canvasWidth}}px; height: {{canvasHeight}}px;"></canvas&…

如何使用 Spring Cloud 实现客户端负载平衡

微服务系统通常运行每个服务的多个实例。这是实施弹性所必需的。因此&#xff0c;在这些实例之间分配负载非常重要。执行此操作的组件是负载均衡器。Spring 提供了一个 Spring Cloud Load Balancer 库。在本文中&#xff0c;您将学习如何使用它在 Spring Boot 项目中实现客户端…

QPainterPath路径类

函数drawPath()绘制的是一个复合的图形&#xff0c;它使用一个QPainterPath类型的参数作为绘图的对象,QPainterPath类用于记录绘图的操作顺序&#xff0c;优点是绘制复杂图形时只需要创建一个painterpath,然后重复调用就可以了 在使用QPainterPath把路径画好之后&#xff0c;我…

脚本-把B站缓存m4s文件转换成mp4格式

js脚本&#xff0c;自动处理视频 1. 需求简介1.1 pc安装b站客户端1.2 设置视频缓存目录1.3 找个视频缓存1.4 打开缓存文件夹![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/0eb346a84d5f42a7908f1d39bf410c3b.png)1.5 用notepad编辑后缀m4s文件&#xff0c;删除文件内…

Windows系统启动MongoDB报错无法连接服务器

文章目录 发现问题解决办法 发现问题 1&#xff09;、先是发现执行 mongo 命令&#xff0c;启动报错&#xff1a; error: MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017&#xff1b; 2&#xff09;、再检查 MongoDB 进程 tasklist | findstr mongo 发现没有进程&a…

澳元/美元价格预测:不排除跌至0.6600的可能

澳元/美元一路下跌至0.6620附近。美元保持强劲上涨势头&#xff0c;升至创下三个月新高。汇价的下跌让关键的200日均线受到考验。 澳元/美元周三再度遭遇抛售兴趣&#xff0c;迅速扭转周二的多头尝试&#xff0c;滑落至0.6630附近的新低。这次急剧下跌也对关键的200日均线构成…

yjs机器学习常见算法01——KNN(02)Kd树

1.什么是Kd树&#xff0c;为什么要引入Kd树 knn是寻找k个邻近的点&#xff0c;在这个过程中&#xff0c;需要一个点一个点的与未分类点进行比较&#xff0c;这样的时间复杂度非常高&#xff0c;因此引入了一种原理类似二叉树的Kd树&#xff0c;以减少比较搜索的次数。 kd树的本…

PyTorch求导相关

PyTorch是动态图&#xff0c;即计算图的搭建和运算是同时的&#xff0c;随时可以输出结果&#xff1b;而TensorFlow是静态图。 在pytorch的计算图里只有两种元素&#xff1a;数据&#xff08;tensor&#xff09;和 运算&#xff08;operation&#xff09; 运算包括了&#xf…

Psychophysiology:脑-心交互如何影响个体的情绪体验?

摘要 情绪的主观体验与对身体(例如心脏)活动变化的情境感知和评估相关。情绪唤醒增加与高频心率变异性(HF-HRV)降低、EEG顶枕区α功率降低以及心跳诱发电位(HEP)振幅较高有关。本研究使用沉浸式虚拟现实(VR)技术来研究与情绪唤醒相关的脑心相互作用&#xff0c;以实现自然而可…

SSM考研科目学习APP-计算机毕业设计源码90377

摘 要 基于Android的考研科目学习系统的设计与实现&#xff0c;旨在为广大考研学子提供一个便捷、高效的学习平台。该系统充分利用Android操作系统的广泛普及与灵活定制性&#xff0c;结合考研科目的特点和需求&#xff0c;实现了个性化的学习方案、丰富的题库资源以及智能化…

【个人同步与备份】电脑(Windows)与手机/平板(Android)之间文件同步

文章目录 1. syncthing软件下载2. syncthing的使用2.1. 添加设备2.1.1. syncthing具备设备发现功能&#xff0c;因此安装好软件&#xff0c;只需确认设备信息是否对应即可2.1.2. 如果没有发现到&#xff0c;可以通过设备ID连接2.1.3. 设置GUI身份验证用户&#xff0c;让无关设备…

LeetCode: 3274. 检查棋盘方格颜色是否相同

一、题目 给你两个字符串 coordinate1 和 coordinate2&#xff0c;代表 8 x 8 国际象棋棋盘上的两个方格的坐标。   以下是棋盘的参考图。   如果这两个方格颜色相同&#xff0c;返回 true&#xff0c;否则返回 false。   坐标总是表示有效的棋盘方格。坐标的格式总是先…

大模型技术学习过程梳理,零基础入门到精通,收藏这一篇就够了

“ 学习是一个从围观到宏观&#xff0c;从宏观到微观的一个过程 ” 今天整体梳理一下大模型技术的框架&#xff0c;争取从大模型所涉及的理论&#xff0c;技术&#xff0c;应用等多个方面对大模型进行梳理。 01 — 大模型技术梳理 这次梳理大模型不仅仅是大模型本身的技术…

接口测试(八)jmeter——参数化(CSV Data Set Config)

一、CSV Data Set Config 需求&#xff1a;批量注册5个用户&#xff0c;从CSV文件导入用户数据 1. 【线程组】–>【添加】–>【配置元件】–>【CSV Data Set Config】 2. 【CSV数据文件设置】设置如下 3. 设置线程数为5 4. 运行后查看响应结果

vue3项目页面实现echarts图表渐变色的动态配置

完整代码可点击vue3项目页面实现echarts图表渐变色的动态配置-星林社区 https://www.jl1mall.com/forum/PostDetail?postId202410151031000091552查看 一、背景 在开发可配置业务平台时&#xff0c;需要实现让用户对项目内echarts图表的动态配置&#xff0c;让用户脱离代码也…

基于Matlab 人脸识别技术

Matlab 人脸识别技术 算法流程&#xff1a; 本系统运用PCA算法来实现人脸特征提取&#xff0c;然后通过计算欧式距离来判别待识别测试人脸&#xff0c;本个系统框架图如下&#xff1a; 图&#xff1a; 人脸识别系统框架图 整个系统的流程是这样的&#xff0c;首先通过图像采…

给哔哩哔哩bilibili电脑版做个手机遥控器

前言 bilibili电脑版可以在电脑屏幕上观看bilibili视频。然而&#xff0c;电脑版的bilibili不能通过手机控制视频翻页和调节音量&#xff0c;这意味着观看视频时需要一直坐在电脑旁边。那么&#xff0c;有没有办法制作一个手机遥控器来控制bilibili电脑版呢&#xff1f; 首先…

基于SpringBoot+Vue+uniapp的时间管理小程序的详细设计和实现(源码+lw+部署文档+讲解等)

详细视频演示 请联系我获取更详细的演示视频 项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念&#xff0c;提供了一套默认的配置&#xff0c;让开发者可以更专注于业务逻辑而不…