FPGA学习笔记

//笔记内容较为杂乱,过一阵在进行整理。。

布斯算法:输入两个信号a,b。输出是一个数值m = a x b。
对于N位乘数Y,布斯算法检查其2的补码形式的最后1位和一个隐含的低位,命名为Yi-1,对于不同的i,考察Yi和Yi-1,当两位相同时,存放积的累加器P值不变,当Yi=0且Yi-1 = 1时,被乘数乘以2的i次方加到P中,当Yi = 1且Yi-1 = 0时,从P中减去被乘数乘以2的i次方。算法结束后,P中得数即为乘法的结果。
布斯算法还有另一种变形,“见一左位走,遇零移位减”

综合:
FPGA的综合指从硬件描述文件生成网表的过程。也就是说如何实现逻辑已经定下来了。
也就是说,综合之后就可以看到RTL结构图了。但是综合之后还没有与目标芯片连接。也就是说管脚指定和逻辑分布在哪些区域仍然是未知的
综合就是把HDL语言转换成综合网表的过程。
综合网表就是综合的结果,除了包含从HDL语言中infer的与非门等组合逻辑和寄存器等时序逻辑,还包含FPGA特有的各种原语如LUT等以及这些模块的属性和约束信息。

//丶unread
一、锁存器
锁存器(latch)---对脉冲电平敏感,在时钟脉冲的电平作用下改变状态
锁存器是电平触发的存储单元,数据储存的动作取决于输入时钟(或者使能)信号的电平值,仅当锁存器处于使能状态时,输出才会随着数据输入发生变化。
锁存器不同于触发器,它不在锁存数据时,输出端的信号随输入信号变化,就像信号通过一个缓冲器一样;一旦锁存信号起锁存作用,则数据被锁住,输入信号不起作用。锁存器也称为透明锁存器,指的是不锁存时输出对于输入是透明的。
锁存器(latch):我听过的最多的就是它是电平触发的,呵呵。锁存器是电平触发的存储单元,数据储存的动作取决于输入时钟(或者使能)信号的电平值,当锁存器处于使能状态时,输出才会随着数据输入发生变化。(简单地说,它有两个输入,分别是一个有效信号EN,一个输入数据信号DATA_IN,它有一个输出Q,它的功能就是在EN有效的时候把DATA_IN的值传给Q,也就是锁存的过程)。
应用场合:数据有效迟后于时钟信号有效。这意味着时钟信号先到,数据信号后到。在某些运算器电路中有时采用锁存器作为数据暂存器。
缺点:时序分析较困难。
不要锁存器的原因有二:1、锁存器容易产生毛刺,2、锁存器在ASIC设计中应该说比ff要简单,但是在FPGA的资源中,大部分器件没有锁存器这个东西,所以需要用一个逻辑门和ff来组成锁存器,这样就浪费了资源。
优点:面积小。锁存器比FF快,所以用在地址锁存是很合适的,不过一定要保证所有的latch信号源的质量,锁存器在CPU设计中很常见,正是由于它的应用使得CPU的速度比外部IO部件逻辑快许多。latch完成同一个功能所需要的门较触发器要少,所以在asic中用的较多。
 
二、触发器
触发器(简写为 FF),也叫双稳态门,又称为双稳态电路。是一种可以在两种状态下运行的数字集成电路。触发器一直保持它们的状态,直到它们收到输入脉冲,又称为触发。当收到输入脉冲时,触发器输出就会根据规则改变状态,然后保持这种状态直到收到另一个触发。
  触发器(电路相互关联,从而为使用内部芯片和微处理器数字集成电路(IC)形成逻辑门。它们可用来存储一比特的数据。该数据可表示音序器的状态、计数器的价值、在计算机内存的ASCII字符或任何其他的信息。
  有几种不同类型的触发电路具有指示器,如T(切换)、S-R(设置/重置)J-K(也可能称为Jack Kilby)和D(延迟)。典型的触发器包括零个、一个或两个输入信号,以及时钟信号和输出信号。一些触发器还包括一个重置当前输出的明确输入信号。第一个电子触发器是在1919年由W.H.Eccles和F.W.Jordan发明的。
触发器(flip-flop)---对脉冲边沿敏感,其状态只在时钟脉冲的上升沿或下降沿的瞬间改变。
T触发器(Toggle Flip-Flop,or Trigger Flip-Flop)设有一个输入和输出,当时钟频率由0转为1时,如果T和Q不相同时,其输出值会是1。输入端T为1的时候,输出端的状态Q发生反转;输入端T为0的时候,输出端的状态Q保持不变。把JK触发器的J和K输入点连接在一起,即构成一个T触发器。
应用场合:时钟有效迟后于数据有效。这意味着数据信号先建立,时钟信号后建立。在CP上升沿时刻打入到寄存器。
三、寄存器
寄存器(register):用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果,它被广泛的用于各类数字系统和计算机中。其实寄存器就是一种常用的时序逻辑电路,但这种时序逻辑电路只包含存储电路。寄存器的存储电路是由锁存器或触发器构成的,因为一个锁存器或触发器能存储1位二进制数,所以由N个锁存器或触发器可以构成N位寄存器。 工程中的寄存器一般按计算机中字节的位数设计,所以一般有8位寄存器、16位寄存器等。
对寄存器中的触发器只要求它们具有置1、置0的功能即可,因而无论是用同步RS结构触发器,还是用主从结构或边沿触发结构的触发器,都可以组成寄存器。一般由D触发器组成,有公共输入/输出使能控制端和时钟,一般把使能控制端作为寄存器电路的选择信号,把时钟控制端作为数据输入控制信号。
寄存器的应用
1. 可以完成数据的并串、串并转换;
2.可以用做显示数据锁存器:许多设备需要显示计数器的记数值,以8421BCD码记数,以七段显示器显示,如果记数速度较高,人眼则无法辨认迅速变化的显示字符。在计数器和译码器之间加入一个锁存器,控制数据的显示时间是常用的方法。
3.用作缓冲器;
4. 组成计数器:移位寄存器可以组成移位型计数器,如环形或扭环形计数器。
四、移位寄存器
移位寄存器:具有移位功能的寄存器称为移位寄存器。
寄存器只有寄存数据或代码的功能。有时为了处理数据,需要将寄存器中的各位数据在移位控制信号作用下,依次向高位或向低位移动1位。移位寄存器按数码移动方向分类有左移,右移,可控制双向(可逆)移位寄存器;按数据输入端、输出方式分类有串行和并行之分。除了D边沿触发器构成移位寄存器外,还可以用诸如JK等触发器构成移位寄存器


  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
开始有计划写这本书的时候, Altera 还叫 Altera, 还没有加入 Intel 的大家庭, Xilinx 的 ZYNQ 也才刚刚开始有人探索, Altera 大学计划第一次将亚洲创新大赛由传统的 SOPC 大赛 换成了 SOC 大赛,软核变硬核,性能翻几番。 那个时候,能出一本认认真真讲 FPGA 设计的 书, 会得到非常高的评价。 而我,则由于工作变动, 中间拖沓了半年,当半年后再来准备动 笔时,才恍然领悟到, Altera 即将成为 Intel 的可编程事业部, 基于嵌入式硬核的 SOC FPGA 芯片开始获得了大量的关注,已经有不少大的小的公司在着手这方面的教学内容与板卡设 计。原本计划编写的内容在新技术新产品面前,好像显得非常的不值一提。 总感觉当大家把 目光都投在了前沿的可编程 SOC 上的时候,我再编写这样一本单纯讲解 FPGA 数字逻辑设计 的书会显得与时代脱节。 于是,编书的动力没有了那么强烈, 这事,又这么放了下来。 在这期间,我也向着 SOC FPGA 做了积极努力的探索, 学习了 Cyclone V SOC 的开发流 程, 从裸机到基于 Linux 嵌入式系统,实现FPGA 和 ARM Cortex-A9 CPU 之间的双向控制和 数据传输。 在做完这之后,就感觉遇到了瓶颈, 瓶颈主要来自于两个方面,第一是对 Linux 软件开发不熟悉,而 SOC FPGA 的处理器端应用又恰好需要对 Linux 的底层和应用都需要一 定的了解。 另一方面是对 FPGA 设计经验的欠缺,使用到 SOC FPGA 架构的场合,往往都是 一些较为复杂的系统,在系统中,本身就对 FPGA设计内容要求较高, 如视频流的处理, 运算加速逻辑的设计, 通信接口的实现等。 所以, 欠缺了任何一方面的知识, 在使用 SOC FPGA 架构的时候都会困难重重。如果 FPGA 方面没有踏实的功底,那么使用 SOC FPGA 也仅 仅只能是当做通用的嵌入式处理器使用, 无法将其结构的优势发挥出来 。 如果没有 ARM 嵌 入式处理器方面的踏实功底, SOC FPGA 也仅仅只能是个 FPGA。 所以, 编写这样一本单纯讲解 FPGA 数字逻辑的书还是非常有意义的,因为这才是真正合理应用 SOC FPGA 优势架构的 基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值