X
首页
技术
模拟电子
单片机
半导体
电源管理
嵌入式
传感器
最能打国产芯
应用
汽车电子
工业控制
家用电子
手机便携
安防电子
医疗电子
网络通信
测试测量
物联网
最能打国产芯
大学堂
首页
直播
专题
TI 培训
论坛
汽车电子
国产芯片
电机驱动控制
电源技术
单片机
模拟电子
PCB设计
电子竞赛
DIY/开源
嵌入式系统
医疗电子
颁奖专区
【厂商专区】
【电子技术】
【创意与实践】
【行业应用】
【休息一下】
最能打国产芯
活动中心
直播
发现活动
颁奖区
电子头条
参考设计
下载中心
分类资源
文集
排行榜
电路图
Datasheet
最能打国产芯
FPGA/CPLD
[原创] 凔海笔记之FPGA(五):(基本|| 组合)逻辑
凔海
2016-3-21 13:40
楼主
在第二节写过这样的一句话:“任何构造都来源于简单的元件和复杂的逻辑,FPGA就是用简单的元件搭建出复杂的操作平台,让我们在上面定制自己想要的东西。”FPGA如此,我们描述的电路亦是如此,接下来,就让我们认识一下简单得不能再简单的电路。
或门电路:有1则为1
assign y = a | b;
与门电路:有0则为0
与门(英语:AND gate)又称"与电路"、逻辑"积"、逻辑"与"电路。是执行"与"运算的基本逻辑门电路。有多个输入端,一个输出端。当所有的输入同时为高电平(逻辑1)时,输出才为高电平,否则输出为低电平(逻辑0)。
assign led = key1 & key2;
非门:黑白颠倒
非门又称反相器,是逻辑电路的重要基本单元,有输入和输出两个端,输出端的圆圈代表反相的意思
assign led = ~key;
异或:相同为0,不同为1。assign led = key1 ^ key2;
应用:
1、 特定位的翻转;
2、实现俩数值的交换而且不必使用临时变量例如:
例如交换两个整数a=10100001,b=00000110的值,可通过下列语句实现:
a = a^b; //a=10100111
b = b^a; //b=10100001
a = a^b; //a=00000110
2、 置零 a^a
3、 快速判断两个数是否相等:return ((a ^ b) == 0)
4、 加密解密
例如:111^101=010 那加密的过程就是逐个字符跟那个secret字符异或运算.
解密的过程就是密文再跟同一个字符异或运算 010^101=111
同或门(sor_gate):相同为1,不同为0.
assign led = ~(key1 ^ key2 );
或非门(nor_gate):有0位1 ,全1位0
assign led = ~(key1 | key2);
与非门(nand_gate):有0为1,全1为0.
与非门是与门和非门的结合,先进行与运算,再进行非运算。与运算输入要求有两个,如果输入都用0和1表示的话,那么与运算的结果就是这两个数的乘积。如1和1(两端都有信号),则输出为0;1和0,则输出为1;0和0,这输出为1。
assign led = ~(key1 & key2);
组合逻辑电路
数字逻辑电路分为组合逻辑电路和时序逻辑电路俩大类。对与组合逻辑电路,它在任意时刻产生的输出只取决于该时刻的输入,而与电路的过去的输入无关。
在此,重点介绍数据选择器、编码器、译码器。
一、数据选择器
何为数据选择器,顾名思义,就是选择数据的器件,再进一步讲,就是选择输出数据的器件。即在地址选择信号的控制下,从多路输入数据中选择某一路数据作为输出,也称多路选择器或多路开关。常用的芯片有74HC153、74HC151
先看一个四选一的数据选择器真值表,即74HC153
那么,接下来,咱们就以74H151(八选一)为例,用Verilog语言来描述一下。
如下为正值表
*H-高电平 *L-低电平 *X-任意电平
设计方案:
由真值表可知,我们可以用Verilog语言来描述一下74H151。设EN、A、B、C、分别为使能端、输出数据选择端。再令D0~D7为八个事件,而这八个是事件处理结果由A、B、C控制选择输出。加入D0是进行的加法运算,就可以由Y输出连续的0/1代码。现定义D0至D7为七个常量,由A、B、C选择一端输出值Y、Y~。当en为低电平是,Y为高电平,Y~为低电平。
代码见mux8_1。
综合的RTL如下
二、8线—3线优先编码器
何为编码器?百度云:“编码是信息从一种形式或格式转换为另一种形式的过程也称为计算机编程语言的代码简称编码。”《数电》云:“用一个二进制代码表示特定含义的信息称为编码。具有编码功能的逻辑电路称为编码器”。说白了,就是
接下来就以优先编码器CD4532为例,用Verilog将其描述。
且看笔者绘制的萌的芯片的功能表。\
从功能表可以看出,该编码器有8个信号输入端,3个二进制码输出端,输入和输出均以高电平为有效电平,而且输出优先级的次序一次为I7、I6……I0。此外,为便于多个芯片连接起来扩展电路的功能,还设置了高电平有效的输入端使能端EI和输出端使能E0,以及优先级编码工作状态GS。
当E1 = 1时,编码工作;而当E1=0时,禁止编码器工作,此时不论8个输入端为何种状态,3个输出端均为低电平,且GS和E0均为低电平。
E0只有在E1为1,且所有输出端都为0时,输出为1,它可以与另一个相同器件的E1连接,以便组成更多输入端的优先级编码器。
GS的功能是,当E1为1,且至少有一个输入端有高电平信号输入时,GS为1,表明编码器处于工作状态,否则GS为0,由此可以区分当电路所有输入端均无高电平输入,或者只有I0输入端有高电平时,Y2Y1Y0均为000的情况。
如何来写代码呢?
首先定义EN为使能端,高电平有效。I1到I7为输入端,假设为八个拨码开关,[2:0]led为输出的三种状态,由输入数据控制。并且设计优先编码,从I1到I7优先级依次降低。
代码参见coder
三、3线—8线译码器
译码是编码的逆过程,它的功能是将具有特定含义的二进制码转换成对应的输出信号,完成这种功能的电路称为码转换电路,它包括译码器和编码器。
这里就介绍一种唯一地址译码器,将一系列代码转换成与之一一对应的有效信号。它常用语计算机中对存储器单元地址的译码,即将每一个地址代码转换成一个有效信号,从而选中对应的单元。
且看真值表:
在看真值表的时候,要注意,对应编码致低电平。其他的为高电平,所以不能再直至不管了。
代码参见3_decoder。
综合的RTL
参见上面两个RTL图可以发现,代码思想很重要呀。
四、BCD—7段译码器
其实这还是一种译码器,只不过是有了它特定的功能而已。而不是根据一种情况输出一个高或低电平。7段译码器就是为了驱动七段式数字显示器而生的。它分输出高电平有效译码器和低电平有效译码器俩种。咱就说一说74HC4511这一种译码器吧。
若瞧关于单片机、FPGA等系列文章,欢迎戳下
凔海笔记本
本帖最后由 凔海 于 2016-3-21 14:56 编辑
zuhe_code.rar
(2016-3-21 13:57 上传)
520.99 KB, 下载次数: 19
点赞
回复评论 (6)
沙发
dong2213dong
顶,顶,顶。。。!
点赞
2016-3-21 14:26
板凳
roumao
mark!
wait.........
点赞
2016-3-21 16:13
4楼
5之蒲公英
跟着过来人,就是有趣
点赞
2016-3-21 17:40
5楼
phantom7
这几天事情多,居然来晚了没赶上直播
>>EE大学堂,精彩视频汇聚的地方
点赞
2016-3-23 11:43
6楼
白丁
楼主好耐性!
training
点赞
2016-3-23 19:26
7楼
凔海
引用:
白丁 发表于 2016-3-23 19:26
楼主好耐性!
点赞
2016-3-25 21:14
最新活动
TI 有奖直播 | 使用基于 Arm 的 AM6xA 处理器设计智能化楼宇
Follow me第二季第3期来啦!与得捷一起解锁高性能开发板【EK-RA6M5】超能力!
报名直播赢【双肩包、京东卡、水杯】| 高可靠性IGBT的新选择——安世半导体650V IGBT
30套RV1106 Linux开发板(带摄像头),邀您动手挑战边缘AI~
安世半导体理想二极管与负载开关,保障物联网应用的稳健高效运行
免费申请 | 上百份MPS MIE模块,免费试用还有礼!
随便看看
电视监控抗干扰设计及方法(转贴)
月相显示器
直流电源端口的雷击保护
DIY磁悬浮
高清监控全面普及之路还要迈几道坎儿?
str710
现场直击:广州天嵌科技受邀参加2014年TI研讨会(成都站)
STC MCU 单片机下载工具
求 帮忙设计直流稳压电源 小生万分感谢
while(1)..我以为我懂的。小弟诚心 请教大神们。。。
高频链技术的发展与应用
cc1101是怎样配对的
正弦表
关于恒流源芯片
新手接触,来报道
寻求一款 STN LCD 的数据手册!
元器件电子产品检测
请问, 什么是“WDM驱动程序”、它与“内核模式驱动程序”有什么区别(没找到资料)?
MAX2170 DataSheet
如何在应用程序中访问wince驱动里分配的内存
电子工程世界版权所有
京B2-20211791
京ICP备10001474号-1
京公网安备 11010802033920号
回复
写回复
收藏
回复