第十一章 VGA显示图片(还不会)

FPGA至简设计实例



前言


一、项目背景

1. IP核概述

        IP 核(Intellectual Property core)指的是知识产权核或知识产权模块,其是具有特定电路功能的硬件描述语言程序,在EDA技术开发中具有十分重要的地位。美国著名的Dataquest咨询公司将 半导体产业的IP定义为“用于ASIC或FPGA中的预先设计好的电路功能模块”。

        在数字电路中IP(知识产权)核非常常用,其将FIR滤波器、SDRAM控制器、PCI接口等比 较复杂的功能模块设计成可修改参数的模块,这些模块会像应用程序一样公开给设计者们使用。在进 行复杂的工程中如果需要这些技术,设计者就可以调用对应IP 核后补充工程所需参数,就可将其运 用到设计中。随着CPLD/FPGA的规模越来越大,设计也变得越来越复杂,设计者的主要任务则是在 规定的时间周期内完成复杂的设计。而IP核的调用可以避免重复劳动,从而大大减轻工程师的负担, 因此使用IP核成为了一大发展趋势,与此同时,IP核的重用大大缩短了产品上市时间。

        利用IP核设计的电子系统具有引用方便的特点且很易于修改基本元件的功能。一般来说,具有 复杂功能和商业价值的IP核具有知识产权,尽管目前IP核的市场活动还不规范,但是仍有许多集成 电路设计公司从事IP核的设计、开发和营销工作。

         IP 核具有三种不同的存在形式:HDL语言形式,网表形式、版图形式。IP内核可以在不同的硬 件描述级实现,由此产生了三类IP 内核:软核、固核和硬核。这种分类主要依据产品交付的方式, 而这三种IP内核实现方法也各具特色。

        软核是用 VHDL 等硬件描述语言描述的功能块,但其并不涉及用哪些具体电路元件来实现这些 功能。软IP通常是以硬件描述语言HDL源文件的形式出现,其应用开发过程与普通HDL的设计十 分相似,只是所需的开发硬软件环境比较昂贵。软IP 的设计周期短,设计投入少,且不涉及物理实 现,因此为后续的设计留有较大的发挥空间,同时也增大了IP的灵活性和适应性。其主要缺点是软I P在一定程度上使后续工序无法适应整体设计,从而需要一定程度的修正,在性能上也不可能获得全 面的优化。软核是以源代码的形式提供,尽管源代码可以采用加密方法,但其知识产权保护问题依然 不容忽视。

        硬核提供设计阶段最终阶段产品:掩膜。这种硬核以经过完全的布局布线的网表形式提供,既具有可预见性,同时还可以针对特定工艺或购买商进行功耗和尺寸上的优化。尽管由于缺乏灵活性而导 致硬核可移植性差,但由于其无须提供寄存器转移级(RTL)文件,因而更易于实现IP保护。

        固核则是软核和硬核的折中。目前应用于FPGA的IP内核大多数均为软核,其有助于用户调节 参数并增强可复用性。软核通常以加密形式提供,这样一来用户无法获取实际的 RTL,但其布局和 布线十分灵活。在这些加密的软核中,如果对内核进行了参数化,那么通过头文件或图形用户接口(G UI)用户可以方便地进行参数操作。而对于那些对时序要求严格的内核(如PCI接口内核),可预布线特 定信号或分配特定的布线资源从而满足其时序要求,这一部分的内核就可归类为固核。由于内核是预 先设计的代码模块,其建立(setup)、保持时间和握手信号都可能是固定的,因此其它电路的设计时都 必须考虑如何与该内核正确地进行接口。如果内核具有固定布局或部分固定的布局,那么这还可能影 响其它电路的布局。

2. ROM IP核

        目前现有的大多数FPGA都有内嵌块RAM(Block RAM),可以将其灵活地配置成单端口RAM(D PRAM,Single Port RAM)、双端口RAM(DPRAM,Double Ports RAM)、伪双端口RAM(Pseudo DPRAM)、CAM(Content Addressable Memory)和 FIFO 等常用的存储结构。其实在FPGA中并没 有专用的ROM硬件资源,实现ROM的思路是对RAM赋予初值后保持该初值。

        Altera 的器件内部提供了各种存储器模块(RAM、ROM 或双口 RAM),可以在设计中使用M egaWizard Plug-In Manager,执行“Tools”后利用“MegaWizard Plug-In Manager”菜单命令来 创建所需要的存储器模块。此外,也可以使用 Altera 提供的宏功能模块 LPM_ROM 来创建存储器 模块。每个 ROM 模块有 clock(时钟)、address(地址)这两个输入信号和一个 q(值)输出信 号。在每个时钟上升沿,ROM 读出地址信号指定存储单元中的信号值并将其输出。ROM 内的值通 过加载 MIF (Memory Initialization File,存储器初始化文件)来实现。

        当设计中使用了器件内部的存储器模块时,需要对存储器模块进行初始化。在 Quartus Ⅱ中, 存储器初始化文件可以使用两种格式:Intel Hex 格式(.hex)或 Altera 存储器初始化格式(.mif)。 其中mif 文件是 Altera 存储器类器件初始化的专用文件格式,文件内容为地址与值的对应表,该表 规定了存储器单元的初始值。

        如果 ROM 要存储的内容比较少或者很有规律,这种情况下可以执行【File】|【New„】菜单 命令,创建mif文件并编辑其内容。如果已经存在bmp格式的图片,则可以使用本书提供的BmpTo Mif 软件,利用现有的bmp格式图片生成mif文件。该软件使用方法非常简单,但是需要注意要适当 调整原图片的大小,这一操作可以通过Windows 自带的画图程序、Photoshop 等各种图形编辑软件 修改实现。BmpToMif 软件可以将 bmp 图片转为 mif 文件,即将黑白图片转换为单色mif文件,将 彩色图片转换为三色mif 文件,也可以将二进制文件转为mif文件,如将中英文点阵字库转换为mif 文件。

3. 图片转成初始化文件

        上文中提到过:在创建mif 文件时,若已经存在bmp格式图片则可以使用软件工具BmpToMif 来将bmp的图片转换为mif文件。下面介绍其具体操作,BmpToMif的软件界面如下图所示。

        点击打开图片后选择一幅bmp格式的图片。这里需要注意的是,由于受开发板上FPGA资源的 限制,图片的大小不能超过320*240。如果图片大小不是320*240,建议使用“画图”或者“photos hop”等软件将图片大小更改为320*240。

         将bmp图片转换为mif文件的过程如下:

        1. 点击“图像”选项卡;

        2. 点击“打开图片”后选择一幅图片,本案例中选择一幅大小为320*240、格式为bmp的图片, 文件名为“mdy_logo.bmp”;

        3. 在“颜色类型”中根据需要选择“黑白”或“彩色”,本案例中将选用黑白模式;

        4. 若为黑白图,在“黑白选项”中选择“黑色为1”或“白色为1”,注意如果是黑白图片,生 成ROM要选择字长为“1”;

        5. 若为彩色图,在“彩色选项”中选择“单

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

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

相关文章

浙江大学公开课|第二季|从大模型、智能体到复杂AI应用系统的构建——以产业大脑为例

大家好,我是吾鳴。 前沿回顾 吾鳴之前给大家分享过浙江大学DeepSeek系列公开课第一季,第一季一共八讲,内容介绍丰富,内容之广,看完粉丝朋友直呼浙大良心。这八讲公开课名称分别是: 第一期(上&…

Spring AOP中为所有类型通知传递参数的完整示例,包含详细注释和参数传递方式

以下是Spring AOP中为所有类型通知传递参数的完整示例,包含详细注释和参数传递方式: // 1. 目标类(被增强的类) package com.example;public class TargetService {public void doTask(String param) {System.out.println("…

【Git教程】将dev分支合并到master后,那么dev分支该如何处理

将 dev 合并到 master 后的分支状态与操作指南 1. 合并后的分支状态 dev 分支不会消失: Git 的 git merge 命令仅将 dev 的内容合并到 master,不会删除 dev 分支。合并后,dev 分支仍然存在,其历史记录和代码保持不变。 分支的 H…

【go】异常处理panic和recover

panic 和 recover 当然能触发程序宕机退出的,也可以是我们自己,比如经过检查判断,当前环境无法达到我们程序进行的预期条件时(比如一个服务指定监听端口被其他程序占用),可以手动触发 panic,让…

CSS层叠顺序

介绍 在 CSS 中,元素的层叠顺序决定了当多个元素重叠时(跟布局没有完全的关系,也就是说层叠顺序只会在几个叠放元素上进行比较,而不会改变布局),哪个元素显示在最上面,哪个元素显示在最下面。 …

数制——FPGA

1、定点数 定点数的三种表示方式: 原码:符号位 绝对值 表示方法 反码:正数的反码表示 与原码表示一致,负数的反码表示 除符号位,其他位全都取反 补码:正数的补码表示 与原码表示一致,负数的补码…

在用redis当中可能遇到的问题解决方案以及redis中的一些名词解释

在用redis当中可能遇到的问题解决方案以及redis中的一些名词解释 Redis篇一、缓存穿透:解决方案:缓存空数据布隆过滤器 二、缓存击穿解决方案互斥锁,强一致性,性能差,速度慢逻辑过期,数据不同步&#xff0c…

一文详解QT环境搭建:Windows使用CLion配置QT开发环境

在当今的软件开发领域,跨平台应用的需求日益增长,Qt作为一款流行的C图形用户界面库,因其强大的功能和易用性而备受开发者青睐。与此同时,CLion作为一款专为C/C打造的强大IDE,提供了丰富的特性和高效的编码体验。本文将…

【区块链安全 | 第二十四篇】单位和全局可用变量(二)

文章目录 单位和全局可用变量(Units and Globally Available Variables)特殊变量和函数1. 区块和交易属性2. ABI 编码和解码函数3. bytes 成员函数4. string 成员函数5. 错误处理6. 数学和加密函数7. 地址类型成员函数8. 与合约相关9. 类型信息 单位和全…

一种监控录像视频恢复的高效解决方案,从每一帧中寻找可能性

该软件旨在恢复从监控设备中删除或丢失的视频。该程序经过调整以处理大多数流行供应商的闭路电视系统中使用的专有格式,并通过智能重建引擎进行了增强,能够为监控记录提供任何通用解决方案都无法实现的恢复结果。如果不需要持续使用该软件,则…

网红指路机器人是否支持环境监测功能?

嘿呀,你可知道?如今的叁仟网红指路机器人那可太牛啦!它们可不单单局限于为行人指明方向,还纷纷兼职当起了 “环境小卫士”,为咱们的城市生活注入了前所未有的超智能便利。就拿那个依托叁仟智慧杆打造的数智指路机器人来…

Navicat导出mysql数据库表结构说明到excel、word,单表导出方式记录

目前只找到一张一张表导出的方式 使用information_schema传入表名查询 字段名根据需要自行删减,一般保留序号、字段名、类型、说明就行 SELECT COLUMNS.ORDINAL_POSITION AS 序号, COLUMNS.COLUMN_NAME AS 字段名, COLUMNS.COLUMN_TYPE AS 类型(长度), COLUMNS.N…

MySQL主从数据库搭建

此方案可适用于Centos 7、OpenEuler、Ubuntu操作系统。 在国产银河麒麟V10中,虚拟机中启动的麒麟系统使用当前方案并未遇到问题,但是在服务器上安装时,执行到初始化时出现了找不到依赖问题(目前已解决安装问题),后续我会继续更新该问题解决方案。 1. 创建主、从安装目录…

`git commit --amend` 详解:修改提交记录的正确方式

文章目录 git commit --amend 详解:修改提交记录的正确方式1. 修改提交信息2. 补充遗漏的文件3. 结合 --amend 进行交互式修改4. 已推送提交的修改总结 git commit --amend 详解:修改提交记录的正确方式 git commit --amend 用于修改最近一次的提交&…

为什么package.json里的npm和npm -v版本不一致?

这个情况出现是因为package.json里的 npm 版本和系统实际使用的 npm 版本是两个不同的概念。让我来解释一下: 原因解释 全局 npm vs 项目依赖: npm -v显示的是系统全局安装的 npm 版本(位于/usr/bin/npm或类似路径)package.jso…

python系统之综合案例:用python打造智能诗词生成助手

不为失败找理由,只为成功找方法。所有的不甘,因为还心存梦想,所以在你放弃之前,好好拼一把,只怕心老,不怕路长。 python系列之综合案例 前言一、项目描述二、项目需求三、 项目实现1、开发准备2、代码实现 …

Java常用工具算法-1--哈希算法(MD5,SHA家族,SHA-256,BLAKE2)

1、概述 哈希算法(Hash Algorithm),又称散列算法,是一种将任意长度的输入数据(明文)转换为固定长度的输出(哈希值/摘要)的数学算法。 哈希值通常被称为摘要(Digest&…

OpenMCU(五):STM32F103时钟树初始化分析

概述 本文主要描述了STM32F103初始化过程系统时钟的初始化,主要描述了系统时钟的初始化,AHB总线时钟,APB总线时钟等的初始化。 硬件板卡3d图 时钟树 STM32F103的时钟树,如下所示: 时钟源选择 从STM32F103的时钟树框图,我们可以…

【qt】文件类(QFile)

很高兴你能看到这篇文章,同时我的语雀文档也更新了许多嵌入式系列的学习笔记希望能帮到你 : https://www.yuque.com/alive-m4b9n 目录 QFile 主要功能QFile 操作步骤QFile 其他常用函数案例分析及实现功能一实现:打开文件并显示功能二实现:另…

基于AT89C52单片机的轮胎压力监测系统

点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/90545655?spm1001.2014.3001.5503 功能介绍: 采用MPX4115压力传感器进行轮胎压力检测;使用LCD液晶显示器显示轮胎压力;若压力过…