module ZephRay;

今朝有鱼今朝摸

Category

  • 摄影
  • 玩机
  • 硬件坑
  • 翻译
  • 软件坑
  • 随记

Tags

  • LCD
  • 点屏
  • 单片机
  • 贴图
  • 计算器
  • 事
  • FPGA
  • 摄影
  • STM32
  • 古董
  • Verilog
  • 测评
  • 笔记本
  • 改造
  • 移植
  • Linux
  • ARM
  • 树莓派
  • 小动物
  • nspire
  • 教程
  • 项目
  • 景
  • EPD
  • GameBoy
  • LED
  • 晒机
  • 3DS
  • SDL
  • ThinkPad
  • IBM
  • HP
  • Kindle
  • 82ES
  • Minecraft
  • Chiptune
  • 仙剑奇侠传
  • 花
  • Assembly
  • 手办
  • Nikon
  • 演讲
  • NDSL

Recent replies

  • Khiemmy 发表于「On the way to overclock the TI nspire CX II calculator」
  • critor 发表于「On the way to overclock the TI nspire CX II calculator」
  • ZephRay 发表于「On the way to overclock the TI nspire CX II calculator」
  • critor 发表于「On the way to overclock the TI nspire CX II calculator」
  • Rise 发表于「写给玩家的FPGA入门指南(6)——Verilog(下)」
  • imbushuo 发表于「About Me」
  • 070 发表于「古董电脑选型」
  • Thermit 发表于「About Me」
  • 盛崖鱼 发表于「About Me」
  • Wenting Zhang 发表于「About Me」

My

RSS (中文优先)
RSS (English preferred)

坑 / Projects
关于我 / About
简历 / CV
破烂采购计划 / Craplist
古董电脑选型
SM83(GB CPU)指令编码
Linux PI 1M位跑分
Coremark跑分
音质参考

淘宝杂货铺
Bilibili空间
GitHub

Links

cnVintage古董电子论坛
cnCalc计算器论坛

Keshuai Xu
家骅的锦绣谷
>Lithia's Core
ntzyz's space
丘丘塔台
tonoko.moe
kasora's blog
447f.Misaka
paizhang.info
spinmry实验室
Hikari Calyx Tech.
春上冰月的博客
初音没有来
FindHao
Test2g
Shell Bin
LEAFER x LAB
分类:硬件坑

写给玩家的FPGA入门指南(3)——时序逻辑

2018 年 11 月 5 日分类:硬件坑#Verilog#FPGA#教程

上期教程中介绍了组合逻辑的使用,而本期教程则要来讲讲时序逻辑。

那么当然,第一个要回答的问题就是,组合逻辑电路和时序逻辑电路有什么区别。如果重新考虑之前做过的电路,不难发现一个特点,这些电路都是给定输入,得到输出。只要输入是一定的,输出也就是一定的。所有影响输出的因素只是输入而已。听起来很自然,没有什么问题对吧?甚至可能还觉得奇怪,如果我给定了输出,但是却不能确定输出,那不是乱套了吗?考虑这么一个需求。还是有一盏灯,有一个按钮,现在需要,按下按键,灯点亮,然后一直保持点亮,再按下按键,灯关闭,并保持关闭。不难看出,单独给定输入状态(按键按下或者没有按下)根本没法知道灯是开着还是关着,也就是输出不单单取决于当前输入,还取决于当前的状态。换句话说,电路有了自己的记忆。而在分析时,除了要考虑当前发生的事情,还需要考虑之前发生过的事情, 多了时间维度。这种电路被称为时序逻辑电路。

锁存器与触发器

记忆这事在单片机或者任何软件编程环境里都好说啊,无非是一个变量的事情。但是如果说回到电路角度,应该怎么解决这个问题呢?引入新的逻辑门,比如说 存储门什么的东西?其实完全不用,只要用之前在组合逻辑时用过的那些东西就可以做出能够存储状态的电路哦。原理图如下

1551044954929-3-1.png

看着有些奇怪是不是,这种电路应该怎么分析呢?因为一眼看过去似乎找不到什么输入,只有一个输出Q。不妨考虑下其中任意一条线为高或低,随后计算出来其它所有线的电平,发现没有出现逻辑上的冲突,也就是只要保持通电,这些电平就会一直保持这个状态。但是如果这时,由于外部的信号,改变了其中任意一条线的电平,所有的电平都会变化,并一直保持新的状态。所以呢,这也就是能够存储1个bit的电路了。

MORE

写给玩家的FPGA入门指南(2)——组合逻辑

2018 年 10 月 7 日分类:硬件坑#FPGA#Verilog#教程

在进行了两期的背景介绍后,本期也是终于是进入正题了。如果你之前有了解过数字电路,大概就听说过数字电路大致可以分为组合逻辑电路和时序逻辑电路,而大部分的电路都是这两者的结合。本期所要介绍的也就是这其中的前者:组合逻辑。顺便,上期之后,大概部分玩家购买的74芯片或者FPGA开发板也已经到货了吧?本期也会附带关于如何用74或者FPGA实现这些实验的说明。   第一个例子还是从第一期举过的例子开始好了。想要设计一个电路,里面有两个开关和一个灯泡,希望实现两个开关任意一个打开的时候灯泡点亮。当然,一个显而易见的解决方案就是把两个开关并联,如下图所示:

1540159699475-1.png

但是如果我们用像一般考虑单片机电路一样的思路去考虑,那么就可以把两个开关看作是两个输入口,而灯泡是一个输出口,那么这个电路就会变成这样:

1540159701655-2.png

而这个盒子里面所包括的就是需要实现的电路。这个电路可以是一块74,也可以是一块单片机,或者只是像图1一样简单的连接起来而已。这里就来考虑下,如果要用单片机来实现要怎么做吧。很简单,一句if语句的事情,直接翻译要求,if ((a == 1)||(b == 1)) c = 1; else c = 0; 可以看见逻辑运算已经出现了,输入1为高或者输入2为高时,输出1为高,否则输出1为低,这样就是这个简单例子的逻辑。另外等于1 可以省略,就变成了if (a || b) c = 1; else c = 0;,再考虑到因为逻辑运算的结果本身就是1或者0,这里甚至不需要if,只需要 c = (a || b) 即可。 只有一个简单的“或”运算(||, OR)的关系,如果要用图示描述出来的话:

MORE

写给玩家的FPGA入门指南(1)——逻辑门,FPGA,开发板,游戏机

2018 年 9 月 9 日分类:硬件坑#FPGA#Verilog#教程

相信通过上一期的文章,大家已经对逻辑电路和单片机的区别有了一些了解,也看到了一些其它爱好者使用逻辑电路(FPGA)做的一些制作。今天要讲的则是一些更加实际的东西,关于相关芯片、开发板的购买,以及本系列实现教程的目标——游戏机——的过程概览。

74 or PLD?

也是按照之前的顺序,我们先讲74再讲CPLD/FPGA。74系列芯片虽然是很早以前就有的东西,功能也可以被可编程器件取代,但是它并没有被完全淘汰。74系列芯片仍然经常被应用在各种电路当中,也容易被买到。值得注意的是,74系列芯片也经常被称为TTL芯片,这是不准确的,74系列也有不少使用CMOS技术制造的芯片,且CMOS是最常使用的,而非TTL。另外提一点,虽然74系列芯片可以被认为是基础,但是完成本系列的教程并不一定需要购买使用74系列芯片,当然作为增加趣味是可以的。

74系列之所以被称为系列,是因为它里面有许多不同功能的芯片,组成了一个系列。基础的比如与或非门,稍微复杂一些的如触发器,再复杂一些如计数器、加法器,都有对应的芯片可以选择。玩过单片机的朋友可能比较熟悉595、245,这些也是74系列芯片的成员,这两者分别常用于扩展IO口和驱动总线。通常来说,74系列芯片使用14脚的DIP或SOP封装,实现一个制作通常也需要多片74芯片。因为根据不同制作和设计的不同,需要的芯片种类和个数也有可能非常不一样,这里可能很难做一个具体的推荐。但是为了完成一些基础的实验,通常来说会用到74HC04(非门)、74HC08(与门)、74HC32(或门)、74HC74(D触发器)和74HC47(LED译码器)。考虑到这些芯片的价格通常比较便宜(几毛钱到1块多人民币不等),可以在买元件的时候顺便带上几片。值得注意的是,由于74芯片确实可以实现和FPGA等价的逻辑功能(但是设计的时序问题可能就较难处理,通常只能实现较为低速的电路设计),为此有不少人热衷于使用74芯片来实现大型的电路,而不是FPGA。毕竟最初的目的只是为了好玩,用74来设计确实可以增加不少乐趣。以下是一个完全用74芯片制作的CPU——TD4: 感兴趣的朋友可以自己搜索来了解一下,也可以尝试把它做出来。

MORE

日常点屏[24]: SX21V001

2018 年 8 月 31 日分类:硬件坑#LCD#点屏#FPGA#Verilog

纵观之前的23期日常点屏加上4期非日常点屏,点过的屏幕类型已经涵盖了正负性STN、正负性FSTN、彩色TFT、Eink、彩色CRT、双色LED点阵和微型LED字符屏。不过显然也有更多其它的屏幕类型是没有涉猎过的,比如等离子、EL、PNLC等等。今天这次点的就是一种十分常见,但是之前却从来没有尝试过的屏幕类型:CSTN。

CSTN屏幕简单来说,无非就是单色STN加上彩色滤色片。那直接用之前单色屏的方案就好了咯?并不是那么简单。目前主流的处理器早已没有了对STN/CSTN接口的原生支持,想要直接接上LCDC玩不太现实,除非找一个古董MPU,比如2410一类的,确实是一个方案。我之前一直都是采用STM32 + bitbang来驱动STN液晶。这个方法对付STN还行,对付CSTN就麻烦了,最大的问题就是各方面速度都不够快。如果从USB输入图像数据,最高也就1-2fps的速度,就算是从SD卡,也就大约10fps的速度(无压缩)。而输出就更惨了,刷新率可能只有30Hz不到,别说抖动灰度,估计连稳定显示都做不到了。

所以解决方案也很直接,上FPGA。于是就有了这个项目了咯。VGA输入,DDR2缓冲,FRC抖动到32级灰度(32K色),最后输出到CSTN。

具体效果可以参考演示视频:https://www.bilibili.com/video/av30767980/

基本信息

  • 型号:SX21V001
  • 类型:彩色被动双扫描图形点阵
  • 模式:CSTN Negative
  • 分辨率:640x480
  • 灰度:无(依靠驱动器进行FRC)
  • 控制器:无
  • 尺寸:8.2"
MORE

写给玩家的FPGA入门指南(0)——什么是FPGA

2018 年 7 月 23 日分类:硬件坑#FPGA#Verilog#教程

想必各位读者中有不少是玩过Arduino、单片机或者是做过一些模拟电路制作的吧? 在玩过这些东西之后,经常会有的一个疑问就是,下一步玩什么?一部分人选择更加复杂的东西,比如32位单片机(如STM32)或者研究嵌入式Linux(如以“树莓派”为代表的超小型计算机),而另一部分人则是选择尽可能利用已经会的东西,做出一些有意思的制作。如果是前者,那么相信,这个所谓的“更复杂的东西”的列表里,一定会有FPGA。这个系列的文章,就是希望帮助那些已经有一定电子制作的基础,想要了解或者学习FPGA,却无从下手的人,当然可能对于正在学校学习FPGA的学生也会有一定的启发作用。本文作为这个系列文章的第一篇,先对FPGA以及相关的内容做一个概述。

如果从来接触过FPGA,那么可能直觉上会认为FPGA是一种很厉害的单片机(MCU),毕竟它看起来也就是一个体积比较大的芯片,开发板看起来也就和单片机开发板一样,甚至开发板自带的教程也像单片机的教程一样,把开发板上面自带的外设全部玩一遍。然而,实际上根本不是这样,FPGA并不是单片机,而且这两者甚至很难具有可比性。通常而言,玩单片机是玩软件编程,而玩FPGA是玩硬件编程。要了解FPGA的含义和用途,还要先从它的功能开始。

FPGA有什么功能?

首先我们来考虑一个问题。现在有一个LED,有一个按键,要实现按下按键点亮LED,应该怎么做呢?答案很简单,把电源、LED和按键全部串联在一起就行了。按下按键,电路接通,LED就会点亮。要用单片机来实现这个效果,基本的思路就是使用一个死循环,不停读取按键输入,然后把结果输出到LED。听起来用单片机完全就是多此一举嘛。那么现在来修改一下需求,有两个按键,要实现现在正好两个按键都按下或者都松开的情况时候点亮LED。用单片机来做并不需要做太多的修改,只需要在循环当中加入一些判断语句即可。如果这种情况下,还需要不使用任何芯片来控制LED,就不是连几条线的事情了。那么是不是说明单片机非常适合做这类的事情呢?其实并不是。考虑一下,如果这只是单片机需要做的事情的一部分,假如单片机还需要进行其他的处理,比如需要控制数码管刷新,也需要不断循坏。当很多这种需要不断循环的东西放到一起时,程序就不那么容易实现了,而且受限于单片机的性能,各个任务的响应速度也会受到影响。

那么有没有除了单片机以外的,更加直接一些的方法,用来实现以上的简单任务呢?比如有没有什么东西,正好有两个输入和一个输出,当且仅当两个输入全部为高或者全部为低的时候,输出高电平呢?答案是肯定的。有一种芯片,叫做74LS86,正好可以实现这个功能。功能类似的芯片还有很多,这类芯片就叫做逻辑们芯片,或者我们常说的74系列芯片(74是主要的逻辑芯片系列,但是也有很多其它系列的逻辑芯片)。他们的内部通常并不复杂,只有数量较少的三极管或者场效应管而已。有了这种芯片,电路设计就十分容易了,把按键接上74LS86的输入,把LED接上74LS86的输出,就能得到需要的效果。当然,如果有更多事情要做,就得加入更多的芯片了,因为单片74芯片通常只能实现非常有限的功能。而且,可想而知,不可能针对每一种特定的应用都会有特定的芯片,这样成本也太高了。也正是这个原因,才会有单片机这类的可编程器件,可以随时修改其实现的功能以满足不同的需要。似乎绕了一圈又回到了原点,并没有解决之前提到的问题,反而是带来了更多的问题。也确实不奇怪,发明单片机的一个目的就是代替一部分用74芯片实现的电路。

MORE
  • «
  • 1
  • …
  • 4
  • 5
  • 6
  • …
  • 16
  • »
Copyright © 2009-2019 Wenting Zhang. All rights reserved.
Unless otherwise noted, content on this blog is licensed under CC BY-SA 4.0.