在学习一门技术之前往往应该从它的编程语言入手,比如学习单片机时,往往从汇编或者C语言入门。所以不少开始接触FPGA的开发人员,往往是从VHDL或者Verilog开始入手学习的。但小编认为,若能先结合《数字电路基础》系统学习各种74系列逻辑电路,深刻理解逻辑功能,对于学习HDL语言大有裨益,往往会起到事半功倍的效果。

当然,任何编程语言的学习都不是一朝一夕的事,经验技巧的积累都是在点滴中完成,FPGA设计也无例外。

一些基础知识:

硬件设计基本原则

FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。

速度与面积平衡和互换原则:

一个设计如果时序余量较大,所能跑的频率远高于设计要求,能可以通过模块复用来减少整个设计消耗的芯片面积,这就是用速度优势换面积的节约;

反之,如果一个设计的时序要求很高,普通方法达不到设计频率,那么可以通过数据流串并转换,并行复制多个操作模块,对整个设计采用“乒乓操作”和“串并转换”的思想进行处理,在芯片输出模块处再对数据进行“并串转换”。从而实现了用面积复制换取速度的提高。

硬件原则:应当理解HDL本质。

系统原则:应当整体把握。

同步设计原则:设计时序稳定的基本原则。

Verilog作为一种HDL语言,对系统行为的建模方式是分层次的。

比较重要的层次有系统级、算法级、寄存器传输级、逻辑级、门级、电路开关级。

实际工作中,除了描述仿真测试激励时使用for循环语句外,极少在RTL级编码中使用for循环。

这是因为for循环会被综合器展开为所有变量情况的执行语句,每个变量独立占用寄存器资源,不能有效的复用硬件逻辑资源,造成巨大的浪费。一般常用case语句代替。

if…else…和case在嵌套描述时是有很大区别的。

if…else…是有优先级的,一般来说,第一个if的优先级最高,最后一个else的优先级最低。而case语句是平行语句,它是没有优先级的,而建立优先级结构需要耗费大量的逻辑资源,所以能用case的地方就不要用if…else…语句。

补充:1.也可以用if…; if…; if…;描述不带优先级的“平行”语句。

FPGA一般触发器资源比较丰富,而CPLD组合逻辑资源更丰富。

FPGA和CPLD的组成。

FPGA基本有可编程I/O单元、基本可编程逻辑单元、嵌入式块RAM、丰富的布线资源、底层嵌入功能单元和内嵌专用硬核等6部分组成。

CPLD的结构相对比较简单,主要由可编程I/O单元、基本逻辑单元、布线池和其他辅助功能模块组成。


版权所有权归卿萃科技 杭州FPGA事业部,转载请注明出处

作者:杭州卿萃科技ALIFPGA

原文地址:杭州卿萃科技FPGA极客空间 微信公众号

扫描二维码关注杭州卿萃科技FPGA极客空间


转载于:https://www.cnblogs.com/alifpga/p/9327066.html

学习 FPGA之前的基础知识相关推荐

  1. 《Java并发编程实践》学习笔记之一:基础知识

    <Java并发编程实践>学习笔记之一:基础知识 1.程序与进程 1.1 程序与进程的概念 (1)程序:一组有序的静态指令,是一种静态概念:  (2)进程:是一种活动,它是由一个动作序列组成 ...

  2. 汇编学习(1)——基础知识

    汇编学习(1)--基础知识 ---谨以此系列文章记录我的汇编学习.  关于汇编 说起汇编语言,那自然不得不想到机器语言,在汇编语言尚未诞生之际,程序猿们只能非常苦逼的敲着0和1,还要记住一大堆复杂难记 ...

  3. 学习python需要什么基础-学习Python需要哪些基础知识?

    今天是腊月二十七,给各位朋友拜个早年! Python学习可以分为几个阶段,入门.进阶.应用. 先说说入门需要哪些基本的知识储备. Python因为易于学习的特点,入门很简单,掌握基本的Python知识 ...

  4. python基础知识资料-学习Python列表的基础知识汇总

    千里之行,始于足下.要练成一双洞悉一切的眼睛,还是得先把基本功扎扎实实地学好.今天,本喵带大家仔细温习一下Python的列表.温故而知新,不亦说乎. 当然,温习的同时也要发散思考,因为有些看似无关紧要 ...

  5. Python学习--最完整的基础知识大全

    ##Python学习–最完整的基础知识大全 关于python的基础知识学习,网上有很多资料,今天我就把我收藏的整理一下分享给大家! #####菜鸟教程python2 #####菜鸟教程python3 ...

  6. 学习hadoop需要具备基础知识

    学习hadoop需要具备基础知识 首先整体上了解Hadoop,包括hadoop是什么,能够做什么,使用场景等,不需要考虑细节问题.在有了整体上的了解后,就开始准备系统地学习hadoop.建议:勿一味学 ...

  7. 学python需要什么基础-学习Python需要哪些基础知识?

    今天是腊月二十七,给各位朋友拜个早年! Python学习可以分为几个阶段,入门.进阶.应用. 先说说入门需要哪些基本的知识储备. Python因为易于学习的特点,入门很简单,掌握基本的Python知识 ...

  8. 小猪的Python学习之旅 —— 1.基础知识储备

    小猪的Python学习之旅 -- 1.基础知识储备 引言: (文章比较长,建议看目录按需学习-) 以前刚学编程的时候就对Python略有耳闻,不过学校只有C,C++,Java,C#. 和PHP有句&q ...

  9. 前端学习笔记(js基础知识)

    前端学习笔记(js基础知识) JavaScript 输出 JavaScript 数据类型 常见的HTML事件 DOM 冒泡与捕获 流程控制语句 for..in 计时器 let,var,const的区别 ...

最新文章

  1. 页面之间url传值,传循环数据里的值成功传值成功接收(动态数据传值)
  2. Java---------- LeetCode——746. 使用最小花费爬楼梯
  3. POJ 3723 Conscription 最小生成树
  4. I2C总线以及GPIO模拟I2C
  5. java6 disable ssl2.0_SpringBoot2.0如何启用https协议
  6. mySql配置在nodejs中使用
  7. CSS进阶(二)——特性
  8. 使用组策略限制设备使用
  9. OpenGL ES 中的模板测试
  10. IOS_多线程_GET_POST_AFN_上传下载_视频播放
  11. QQ密技68招(超强)
  12. Origin 去demo水印
  13. 使用 spire.doc 将word转pdf
  14. 朴素贝叶斯+拉普拉斯平滑代码实现-方法二
  15. 回溯法、动态规划法——牛妹的蛋糕
  16. 泰勒·考恩的《大停滞?》
  17. 二叉排序树和平衡二叉树
  18. Windows 10系统下查看硬盘类型的方法
  19. sail.js学习 - 安装篇
  20. WINDOWS性能监控器的监视以及邮件预警配置

热门文章

  1. 设置共享,实现Linux和Windows之间的共享
  2. tomcat7.0 安装启动之后localhost:8080页面进不去,提示错误500
  3. LAMMP源码环境搭建
  4. Delphi 的消息机制浅探三
  5. Mobile 拨打电话 发送短信
  6. 连接池技术 Connection Pooling
  7. 编译原理-First集和Follow集
  8. 内存存储器和外存储器的异同
  9. springboot+mybatis+shiro——shiro简介
  10. [笔记]何为Linux及其文件系统(四)