全网首创ISE入门级教程
转眼间我已经大三了,现在成为了实验室的负责人,对于下一届学生的纳新重任就交到了我的手上,想采取不同的方法暑假尽可能对他们进行一些培训,所以制作了此教程,说实话,在网上还没有找到关于ISE的入门级使用教程呢!可谓是全网首创啊!话不多说,我们赶紧看看我的处女视频教程吧!
互联网是最好的学习平台,让贫富之间的教育资源差距减小,对于FPGA来说晚上的教学资料、视频非常多,但是多数为Altera的QuartusII开发套件使用,而Vidado的使用貌似这两年也多了起来,那么ISE被抛弃了吗?之前有过一个前辈做过关于ISE的使用教程,但那都涉及到摄像头驱动的FPGA进阶阶段了,所以今天这套FPGA入门第一课的视频教程,可真谓是全网首创关于ISE软件的使用教程。这是西邮电院FPGA创新小组的纳新公开课,FPGA入门第一课一位全加器的设计(ISE使用教程的百度云盘链接在文章第五部分)。
一、 FPGA创新小组纳新公告
FPGA创新实验室处于西安邮电大学2号实验楼(电子工程学院实验楼)107实验室。主要学习方向为数字集成电路设计(FPGA),每年九月份中旬进行纳新,主要面向微电子系(集成电路和微电子专业)的16级学生。为了使纳新结束后大家能够快速进入学习状态,我们暑假会针对纳新考核进行相应的培训,让大家提前有一个对FPGA的认识并且能设计出一些简单的电路。群文件有相关资料,请大家自行下载学习。前期需要大家将软件下载安装(链接如下),学习一些数电基础知识(群文件有数电电子书康华光版),Verilog基本语法(请看群文件),后面的线上课程会再通知。大家有什么疑问可以直接在群里提出。
二、 FPGA是什么
FPGA(Field-ProgrammableGate Array),即现场可编程门阵列,使用Verilog HDL(Hardware Description Language)进行描述,FPGA可以理解为把数字电路的元器件都集成到FPGA芯片内部,与门、或门、选择器、D触发器。实际上它内部构造是用FPGA利用小型查找表(LUT)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O(input/output),由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。

图 - LUT实现原理图

图 – D触发器
总的来说,它是利用verilogHDL硬件描述语言来描述数字电路,你所写的代码,映射到板子上实际上就是一些数字电路。
FPGA公司主要是两个Xilinx和Altera(现intel PSG),我们目前用的ISE是Xilinx的开发套件,现在ISE更新到14.7已经不更新了,换成了另一款开发套件Vivado,也是Xilinx的产品,intel的开发套件是Quartus II系列,我们实验室这两款公司的开发板都有,不用对于入门来说,选择ISE有两个原因,一是它比Vivado快多了,二是它和Quartus II相比不用自己写测试文件(激励)。实验室的板子这两个公司都有,代码都是可以移植的,学习的话都要学的,软件不是问题,重点是FPGA的设计思想。
三、 FPGA与单片机的区别
对于单片机和FPGA的主要区别。单片机可以理解为跑程序的微型电脑,麻雀虽小五脏俱全,所以写的代码相当于程序,应该属于软件范畴。单片机写出来程序,用编译器编译后实际上是一条条指令(MIPS指令),控制单片机去控制它的外围器件。
FPGA则应该理解为可编程的数字逻辑电路集成芯片,所以写的代码其实是在描绘一个数字逻辑电路。
两者最大的区别应该是在速度上的区别,FPGA内部是并行的,所有的电路逻辑都是在同一个时钟触发下工作的,而单片机属于单线程,内部属于顺序执行,一个执行完了再执行下一个。速度肯定要慢。
FPGA主要用于通信、图像处理等领域,ASIC的设计验证,就在去年到今年还有一个新的领域AI,用FPGA加速深度学习算法,BAT也都部署了FPGA云服务器。因为其速度快的优点,所以用来处理数字信号是所擅长的。最经典的是2008年北京奥运会开幕式的画卷显示屏用的就是Altera Cyclone II FPGA驱动的。
在初学FPGA的时候容易的是把VerilogHDL当C语言来写,把FPGA但单片机来用。写的代码不能称之为程序,应该称之为代码,以区别和软件的不同。

图 – CPU与FPGA
四、 一位全加器的设计
需要基础知识:二进制的加法运算、真值表、卡诺图、Verilog HDL基本语法
1 + 1 =1 0; 1 + 0 = 1; 0 + 0 = 0;
全加器(Full Adder)


图 - 一位全加器真值表
上图是数电书上的全加器真值表,下图是我自己画的。
A和B为两个加数,CI表示低位向本位的进位,CO本位向高位的进位。我们在这里设计中用不到CI,设计超前进位加法器会用到。所以看右边的图就可以了。
Verilog有四种描述风格:晶体开关级描述风格、门级描述风格、数据流风格、行为级描述风格。
开关级描述风格太老我们不学。门级描述风格也太原始,交给你们数电老师去教。数据流描述风格虽然不常用,但是为了更加深刻理解组合逻辑的设计,所以后续课程在进行讲解。今天我们就用最简单,最迅捷的行为级描述来描述这一个一位加法器。
五、 ISE14.7使用流程
FPGA创新小组纳新公开课class1:百度云链接:http://pan.baidu.com/s/1bpAgmtD 密码:psx2
视频中有详解
ISE14.7与Notepad++级联:http://www.cnblogs.com/ninghechuan/p/6172237.html
注意
(1) Wire型数据只能能在assign语句里赋值
(2)Reg型数据只能在initial块,always块,for赋值
六、 课后练习
重新新建一个工程,自主设计一个四位全加器,要求有仿真。最终将工程打包发送至我的邮箱ninghechuan@foxmail.com,可以编写一份文档对设计进行概述和说明,附加学习心得和感想
七、 你能得到什么
首先是提高动手能力,很多东西自己动手做一遍和你从课本上学理论的感受是不一样的。
我们实验室每年都会组织参加各类电子竞赛,增强项目实践能力。
增加考研就业竞争力,
实验室有空调,有空调,空调,调。

转载请注明出处:NingHeChuan(宁河川)
个人微信订阅号:NingHeChuan
如果你想及时收到个人撰写的博文推送,可以扫描左边二维码(或者长按识别二维码)关注个人微信订阅号
知乎ID:NingHeChuan
微博ID:NingHeChuan
原文地址:http://www.cnblogs.com/ninghechuan/p/7171791.html
全网首创ISE入门级教程的更多相关文章
- Git学习记录 力做全网最强入门教程
目录 Git学习记录 力做全网最强入门教程 什么是GitHub? 什么是Git? Git的配置 Git的安装(只介绍windos操作系统下) Git的配置 至此我们的入门教程到此结束,更新中级教程要等 ...
- Android Studio 入门级教程(三):gradle项目构建
声明 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4456420.html [系列] Andr ...
- Android Studio 入门级教程(二):新建一个属于自己的工程并安装Genymotion模拟器
声明 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4392611.html [系列] Andr ...
- Android Studio 入门级教程(一)
声明 AS已经是Android开发的主流工具了,但是学校教学用的还是eclipse,很多同学不知道如何入门.网上看到一位大神整理得很好的教程,转载过来,希望可以帮到有需要的人. 生命壹号:http:/ ...
- Android Studio 入门级教程
引用原文:http://www.cnblogs.com/abao0/p/6934023.html 写博客是为了记住自己容易忘记的东西,另外也是对自己工作的总结,文章可以转载,无需版权.希望尽自己的努力 ...
- webpack入门级教程
Webpack是什么 首先可以看下官方文档,文档是最好的老师. 这里也有国外的一个朋友写的入门介绍. Webpack是由Tobias Koppers开发的一个开源前端模块构建工具.它的基本功能是将以模 ...
- [Splay伸展树]splay树入门级教程
首先声明,本教程的对象是完全没有接触过splay的OIer,大牛请右上角.. 首先引入一下splay的概念,他的中文名是伸展树,意思差不多就是可以随意翻转的二叉树 PS:百度百科中伸展树读作:BoGa ...
- Unity黑巧克力 滚球游戏 入门级教程
<黑巧克力>系列教程是适合于新手上手Unity的教程,本教程适合作为初次接触Unity(零基础)的第一篇的教程.学习本教程需要有的基础是:线性代数.编程基础.Csharp语言基础.Unit ...
- appium入门级教程(3)—— 安装 Android SDK
前言 搭建Android平台不是必须的,如果你不想使用 Android 模拟器运行测试的话可以跳过,不过,建议安装:原生 Android 好折腾!关键是它自带的一些工具是做 appium 测试必须要用 ...
随机推荐
- String为值类型还是引用类型
关于String为值类型还是引用类型的讨论一直没有平息,最近一直在研究性能方面的问题,今天再次将此问题进行一次明确.希望能给大家带来点帮助. 如果有错误请指出. 来看下面例子: //值类型 int a ...
- 2016.02.01日,UdoOS系统项目正式开通了
2016.02.01日,UdoOS系统项目正式开通了,源代码即将开放 Copyright (c) 2016
- SQL Server中对存储过程的理解
数据库的存储过程理解为,处理数据的子程序,写起来像函数,用起来像函数,在SQL Server中存储过程分为两大类,系统的和自定义的,系统的都放在master系统数据库中,自定义就是自己去写的,用DDL ...
- Akka(5): ConsistentHashing Router - 可选定Routee的任务分配模式
上一篇讨论里我们介绍了几种任务分配(Routing)模式.Akka提供的几种现成智能化Routing模式大多数是通过对用户屏蔽具体的运算Routee选择方式来简化Router使用,提高智能程度,所以我 ...
- jQuery杂项方法
前面的话 杂项方法其实也是工具类方法,但由于其不是定义在jQuery构造函数上的方法,所以不能称为工具方法.本文将详细介绍jQuery中的杂项方法 数据操作 [data()] 该方法用于在匹配元素上存 ...
- Unity3d: 资源释放时存储空间不足引发的思考和遇到的问题
手机游戏第一次启动基本上都会做资源释放的操作,这个时候需要考虑存储空间是否足够,但是Unity没有自带获取设备存储空间大小的 接口,需要调用本地方法分别去android或ios获取,这样挺麻烦的.而且 ...
- 基于java.util.logging实现轻量级日志记录库(增加根据当前类class初始化,修复线程池模型(javaEE)下的堆栈轨迹顺序与当前调用方法不一致问题)
前言: 本章介绍自己写的基于java.util.logging的轻量级日志记录库(baseLog). 该版本的日志记录库犹如其名,baseLog,是个实现日志记录基本功能的小库,适合小型项目使用,方便 ...
- maven项目转成web项目没有生成WebContent目录
有时候建立maven项目转成web项目没有生成WebContent目录,此时把Dynamic web module 去掉勾选,然后ok,再点开项目的properties,再选中Dynamic web ...
- C# 计时器写法
刚才一个交流群里有人问计时器怎么写,正好我也不太熟,就写了个demo,和大家分享一下这个是参考师傅的写的! 计时器有好多种写法,这里给大家推荐一个性能比较好的,用dispatchertimer ...
- DataTable数据导出Excel 并且下载
public string Excel(System.Data.DataTable dt) { //模板的路径 string strUploadPath = HttpContext.Current.S ...