完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 HUAN******YING 于 2016-5-18 09:47 编辑 还记得曾写过这样的一句话,任何构造都来源于简单的元件和复杂的逻辑。先作为菜鸟没有那个思维去设计复杂的逻辑,那就说一说见的元件吧(^o^)/~ 一、基本逻辑门电路 或门电路:有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); 数字逻辑电路分为组合逻辑电路和时序逻辑电路俩大类。对与组合逻辑电路,它在任意时刻产生的输出只取决于该时刻的输入,而与电路的过去的输入无关。 在此,重点介绍数据选择器、编码器、译码器,以便熟悉Verilog的组合逻辑编程。 一、数据选择器 何为数据选择器,顾名思义,就是选择数据的器件,再进一步讲,就是选择输出数据的器件。即在地址选择信号的控制下,从多路输入数据中选择某一路数据作为输出,也称多路选择器或多路开关。常用的芯片有74HC153、74HC151 先看一个四选一的数据选择器真值表,即74HC153 *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将其描述。 且看笔者绘制的萌的芯片的功能表。 *H-高电平 *L-低电平 *X-任意电平 从功能表可以看出,该编码器有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线译码器 译码是编码的逆过程,它的功能是将具有特定含义的二进制码转换成对应的输出信号,完成这种功能的电路称为码转换电路,它包括译码器和编码器。 这里就介绍一种唯一地址译码器,将一系列代码转换成与之一一对应的有效信号。它常用语计算机中对存储器单元地址的译码,即将每一个地址代码转换成一个有效信号,从而选中对应的单元。 且看真值表: |
|
相关推荐
|
|
你正在撰写讨论
如果你是对讨论或其他讨论精选点评或询问,请使用“评论”功能。
1254 浏览 1 评论
助力AIoT应用:在米尔FPGA开发板上实现Tiny YOLO V4
1031 浏览 0 评论
2319 浏览 1 评论
2034 浏览 0 评论
矩阵4x4个按键,如何把识别结果按编号01-16(十进制)显示在两个七段数码管上?
2291 浏览 0 评论
1780 浏览 47 评论
6001 浏览 113 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 15:56 , Processed in 0.535997 second(s), Total 34, Slave 27 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号