第一篇:FPGA教学大纲
四 川 大 学 锦 城 学 院
本科课程《现场可编程逻辑门阵列FPGA》
电子类专业教学大纲
一、课程基本信息
课程名称(中、英文):《现场可编程逻辑门阵列FPGA》, Field Programmable Gate Array 课程类别:必修专业课
学时:
学分:2
二、预前知识
数字电子技术基础
三、课程目的及要求
1.了解FPGA的应用场合、发展历程、主要厂家。2.熟悉典型FPGA的基本结构。
3.掌握FPGA设计流程及其中涉及到的重要概念与工具软件。4.熟练掌握可综合的Verilog语法语句。
5.掌握常用的基本电路结构,并能用Verilog语言进行描述。
四、教学内容及进度
第1章 课程简介(本章2课时)
掌握FPGA的概念、用途及生产厂家,掌握FPGA的学习方法。重点:FPGA的学习方法 难点:芯片可编程的理解 1.什么是FPGA 2.FPGA有何用途 3.为什么要学习FPGA 4.如何学习FPGA 第二章 可编程逻辑器件基础(本章2课时)
掌握与或阵列及查找表用于实现逻辑函数的方法,了解基于与或阵列结构可编程逻辑器件的发展历程,掌握典型FPGA的基本结构及使用上的特点,了解FPGA的发展趋势。
重点:与或阵列及查找表用于实现逻辑函数 难点:典型FPGA的基本结构 1.知识准备:与或阵列、查找表 2.可编程逻辑器件结构发展历程 3.FPGA结构介绍
第3章 硬件描述语言基础(本章2课时)
掌握硬件描述的思想,了解常用的硬件描述语言及Verilog的历史,掌握可综合的概念及对应的设计思路,掌握数字芯片系统结构及自顶向下分层设计的方法,掌握Verilog描述程序的基本结构及Verilog基本语法。
重点:数字芯片系统结构及Verilog基本语法 难点:可综合的理解
1.硬件描述语言及Verilog简介 2.可综合简介
3.自顶向下分层设计的思路 4.Verilog基本语法
第4章 Verilog基本描述语句(本章4课时)
掌握常用的可综合Verilog描述语句:always过程语句;串行块begin-end;连续赋值 assign;过程赋值 =、<=;条件语句if-else、case;循环语句for 重点:常用的可综合Verilog描述语句
难点:阻塞赋值与非阻塞赋值的区别,顺序执行与并发执行的区分 1.always过程语句 2.串行块begin-end 3.连续赋值 assign 4.过程赋值 =、<= 5.条件语句if-else、case 6.循环语句for 第5章 运算符及表达式(本章4课时)
掌握Verilog中注释的格式;掌握Verilog中整数常量的表示法;掌握Verilog中常用的可综合运算符的使用:逻辑运算符、关系运算符、相等与全等运算符、位运算符、归约(缩减)运算符、移位运算符、条件运算符、连接(位拼接)运算符、算术运算符 重点:常用的可综合运算符的使用
难点:各运算符的优先级别及对有符号数和无符号数处理的差别 1.注释的格式 2.整数常量表示法 3.逻辑运算符 4.关系运算符 5.相等与全等运算符 6.位运算符
7.归约(缩减)运算符 8.移位运算符 9.条件运算符
10.连接(位拼接)运算符 11.算术运算符
第6章 基本电路设计(本章2课时)
掌握电路描述方法,掌握按端口位置对应及按端口名称对应的模块例 化方式,掌握常用基本电路的结构及描述方法 重点:常用基本电路的结构及描述方法
难点:按端口位置对应及按端口名称对应的模块例化方式
1.电路描述方法,按端口位置对应及按端口名称对应的模块例化方式 2.2选1多路选择器 3.优先编码器 4.多路选择器 5.译码器 6.D触发器 7.移位寄存器 8.上升沿检测 9.下降沿检测 10.计数器
11.两级单时钟使能计数器结构
第7章 有限状态机设计(本章2课时)
掌握状态机设计及描述方法,掌握起始状态、剩余状态的处理,掌握各状态编码方式之间的差别及各自的优缺点。重点:状态机设计及描述方法
难点:格雷码及“one-hot”状态值编码 1.有限状态机介绍及其优点 2.状态机设计思路 3.起始状态处理 4.状态编码方式 5.剩余状态与容错技术
第8章 双向端口及存储器(本章2课时)
掌握双向端口的定义及使用,掌握使用D触发器组及调用库单元实现 存储器的描述方式。重点:存储器的描述 难点:双向端口的使用 1.双向端口的定义及使用 2.存储器描述方式
第9章 设计方法与技巧(本章4课时)
掌握可编程逻辑设计的基本原则,掌握可编程逻辑设计常用设计思想和技巧,掌握良好的编码风格。重点:时钟的最小周期定义 难点:流水线、寄存器配平1.可编程逻辑设计的基本原则 2.可编程逻辑设计常用设计思想和技巧 3.Altera公司推荐的编码风格 4.面积优化 5.速度优化
五、教材
《CPLD/FPGA与ASIC设计实践教程》 主编:陈 赜
编著:朱如琪、罗 杰、王建明、鲁 放 出版社:科学出版社 出版日期:2005-8 书号:ISBN-978-7-03-016036-2/TP.332.1
六、主要参考资料
[1] 陈云洽,CPLD应用技术与数字系统设计,北京:电子工业出版社,2003 [2] 黄智伟,FPGA系统设计与实践,北京:电子工业出版社,2005 [3] 李国丽,EDA与数字系统设计,北京:机械工业出版社,2004 [4] 王金明,数字系统设计与Verilog HDL,北京:电子工业出版社,2002
七、成绩评定
学科成绩总分100分:
期末闭卷考试,考查学生对基本理论、能力的掌握程度,100分,占70%
平时成绩100分(包括考勤,课堂提问,作业)占
30%
第二篇:教学大纲-FPGA及硬件描述语言
《FPGA与硬件描述语言》教学大纲
课程名称:FPGA与硬件描述语言
英文名称: FPGA and hardware description language 课程类别:实践教学课 课程编号: 学
分: 4
学
时:68 课程简介:
FPGA与硬件描述语言该课程主要讲授数字逻辑电路的基本知识、基本理论和基本分析、设计方法,并利用现代EDA技术的verilog和Multisim进行数字逻辑电路分析与设计,它起到由专业基础课向专业课过渡的承上启下的作用。本课程的教学任务是通过本课程的理论学习,使学生掌握有关数字逻辑的基本理论,熟悉数字逻辑电路基本器件的电路结构、功能和使用方法,掌握数字逻辑电路的分析方法和设计方法。通过课堂教学演示环节及课程设计,使学生掌握利用Verilog和EDA工具进行数字逻辑电路设计的方法.课程内容:
1.概论:EDA设计方法以及FPGA/CPLD特点 2.层次建模的概念 3.基本概念 4.模块和端口 5.门级建模 6.数据流建模 7.行为级建模 8.任务与函数 9.实用建模技术 10.时序和延迟 11.开关级建模 12.用户自定义原语 先修课程:《C语言程序设计》、《数字逻辑电路》 适用专业:电子信息技术
教材(暂定):《Verilog HDL 数字设计与综合》 作者:(美)Sanir Palnitkar,译者: 夏宇闻 胡燕祥 刁岚松
电子工业出版社
参考教材:
1、《Verilog HDL数字设计与综合(第二版)》,电子工业出版社
夏宇闻
2、《电子工程师创新设计必备宝典系列之FPGA开发全攻略》,张国斌
3、《Verilong数字系统设计教程 》,北航出版社
夏宇闻
开课学院:信息技术学院
具体课程内容与安排
第一章 概述
第一节 课程介绍
第二节 学习重点及学习方法
第三节 EDA技术及发展与实现目标 第四节 硬件描述语言及IEEE标准 第五节 EDA设计流程及优点 第六节 常用EDA工具
第七节 电子设计自动化系统软件与器件
第八节 数字系统设计方法
第九节 九节 FPGA/CPLD的特点及发展
(一)采用多媒体,讲解与演示相结合
(二)内容及基本要求 主要内容: 【重点掌握】:FPGA/CPLD的优缺点,采用硬件描述语言(Verilog HDL)的设计流程。【掌握】:EDA设计流程方法及数字系统设计方法的比较和优点,自顶向下的设计方法; 【了解】:EDA工具的发展以及特点,【一般了解】:EDA技术及发展
第二章 层次建模的概念
第一节 自底向上和自顶向下设计方法 第二节 模块的基本概念 第三节 四种不同的描述方式 第四节 逻辑仿真的构成
(一)采用多媒体,讲解与演示相结合
(二)内容及基本要求 主要内容: 【重点掌握】:数字电路自顶向下设计方法以及模块相关内容的学习; 【难点】:自顶向下以及自底向上的设计思路;
第三章 verilog基本概念
第一节 模块的结构 第二节 数据类型及其常量和变量 第三节 运算符及表达式
(一)采用多媒体,讲解与演示相结合
(二)内容及基本要求
主要内容:verilog基本语法和结构 【重点掌握】:基本语法和概念以及词法约定 【掌握】:各种数据类型 【了解】:系统任务和编译指令 【一般了解】: 【难点】:各类寄存器数据类型
第四章 模块和端口
第四节
模块 第五节
端口列表 第六节
端口声明
第四节 端口连接规则 第七节
端口与外部信号的连接 第八节
层次命名
(一)采用多媒体,讲解与实验相结合
(二)内容及基本要求
主要内容:verilog的模块定义、组成部分以及端口列表以及声明和端口连接。
【了解】:verilog标示符的层次引用 【重点掌握】:模块各部分的定义和应用 【难点】:端口连接的命名规则
第五章 门级建模
第一节
门的类型 第二节 门延迟
(一)采用多媒体,讲解与实验相结合
(二)内容及基本要求
主要内容:verilog如何用门级对实际电路做硬件电路建模 【重点掌握】:门的类型与延迟,门级建模的具体设计电路 【掌握】: 上升、下降和关断延迟 以及最小/典型/最大延迟 【难点】:门级建模的具体电路实现
第六章 数据流建模
第一节 连续赋值语句assign 第二节 延迟
第三节 表达式、操作符和操作数 第四节 操作符类型
(一)采用多媒体,讲解与演示相结合
(二)内容及基本要求
主要内容:连续赋值语句以及使用数据流结构对实际电路的数字电路建模。【重点掌握】:连续赋值的定义及应用;操作符的类型 【掌握】: 延迟的概念和应用 【难点】:用数据流语句设计电路,掌握门级建模与数据流建模的区别
第七章 行为级建模
第一节 结构化过程语句 第二节 过程赋值语句 第三节 条件语句 第四节 多路分支语句
第五节 循环语句
第六节 顺序块和并行块 第七节 生成块
(一)采用多媒体,讲解与实验相结合
(二)内容及基本要求
主要内容:行为级建模的语法以及结构 【重点掌握】: 在实际电路中进行行为级建模以及时序控制机制 【掌握】:行为级建模的语法和语句,always、initial,阻塞和非阻塞以及 4 过程性赋值语句。
【难点】:行为级建模的具体实现
第八章 结构语句、系统任务、函数语句和显示系统任务
第一节 结构说明语句 第二节 任务和函数语句 第三节 其他任务和函数语句
(一)采用多媒体,讲解与演示相结合
(二)内容及基本要求
主要内容:任务与函数的定义 区别以及应用 【重点掌握】:任务和函数语句的使用 【掌握】: 模块、任务、函数和命名块定义和联系,任务与函数所需要的条件。
【难点】:任务和函数语句的使用
第九章 实用建模技术
第一节 过程连续赋值 第二节 改写(覆盖)参数
第三节 条件编译和执行 第四节 时间尺度
第五节 常用的系统任务
(一)采用多媒体,讲解与演示相结合
(二)内容及基本要求 主要内容: 【重点掌握】:assign deassign force 和release的定义和使用 【掌握】:在模块调用时用defparam语句重新定义参数值 【了解】:认识和理解系统任务,如文件输出、显示层次、选通显示、随机数生成、存储器初始化和值变转储等系统任务 【一般了解】: 【难点】: 条件编译和verilog描述部件的执行。
第十章 时序和延迟
第一节 延迟模型 第二节 路径延迟建模 第三节 时序检查
第四节 延迟反标注
(一)采用多媒体,讲解与演示相结合
(二)内容及基本要求 主要内容: 【重点掌握】:如何在仿真过程中用specify块设置路径延迟 【掌握】:延迟模型的类型和定义 【了解】:时序检查定义系统任务 【一般了解】: 延迟反标注 【难点】: 路径延迟建模的连接
第十一章 开关级建模
第一节:开关级建模元件
主要内容:开关级建模的基本知识 【一般了解】:仅作大概了解 【难点】:
第十二章 用户自定义原语
第一节:UDP的基本知识 第二节:表示组合逻辑的UDP 第三节:表示时序逻辑的UDP 第四节:UDP表中的缩写符号 第五节:UDP设计指南 主要内容:
【重点掌握】编写时序和组合逻辑UDP: 【难点】:UDP设计的原则以及与门级建模的区别
第十三章 编程语言接口 第一节:PLI的使用
第二节:PLI任务的连接和调用 第三节:内部数据表示 第四节:PLI库子程序 主要内容: 【重点掌握】:如何在仿真中使用任务和函数 【难点】:用户如何创建自定义系统任务和函数,6 第十四章 使用vrilog进行逻辑综合
第一节:什么是逻辑综合
第二节:逻辑综合对数字设计行业的影响 第三节:verilogHDL综合 第四节:逻辑综合流程 第五节:门级网表的验证 第六节:逻辑综合建模技巧 第七节:时序电路综合举例
主要内容:了解逻辑综合的方法和问题。【了解】:逻辑综合编写RTL的技巧 【一般了解】: 逻辑综合的概念和优点 【重点掌握】:可综合的结构和操作符以及逻辑综合的最佳门级网表分隔技术 【难点】:使用逻辑综合进行组合电路和时序电路的设计
三、课程考核
(一)基本要求及比例:考试是对学生掌握知识水平的检验,重点掌握内容占考试内容的70%、掌握内容占20%、了解及一般了解内容占10%。
(二)成绩构成与说明: 总评成绩 =平时学习表现(10%)+上机实验(20%)+实训项目(20%)+期末考试成绩(50%)
期末考试:
考试形式:上机闭卷考试 时间长度(120分钟)
制定人:贾政亚
审定人:
批准人:
日
期: 2014年10月1日
第三篇:FPGA学习心得
回想起自己学FPGA,已经有一段时间了,从开始的茫然,到后来的疯狂看书,设计开发板,调电路,练习各种FPGA实例,到最后能独立完成项目,一路走来,感受颇多,拿出来和大家分享,顺便介绍下自己的一点经验所得,希望对初学者有所帮助。
废话不说了,下面进入正题,学习FPGA我主要经历了这么几个阶段:
①、Verilog语言的学习,熟悉Verilog语言的各种语法。
②、FPGA的学习,熟悉QuartusII软件的各种功能,各种逻辑算法设计,接口模块(RS232,LCD,VGA,SPI,I2c等)的设计,时序分析,硬件优化等,自己开始设计简单的FPGA板子。
③、NiosII的学习,熟悉NiosII的开发流程,熟悉开发软件(SOPC,NiosII IDE),了解NiosII的基本结构,设计NiosII开发板,编写NiosII C语言程序,调试板子各模块功能。
先来说说第一个阶段,现在主要的硬件描述语言有VHDL,Verilog两种,在本科时老师一般教VHDL,不过现在
Verilog用的人越来越多,其更容易上手(与C语言语法比较类似),也更灵活,现在的IC设计基本都用Verilog。像systemC,systemVerilog之类的应该还在萌芽阶段,以后可能会有较大发展。鉴于以上原因我选择了Verilog作为我学习的硬件描述语言。
其实有C语言的基础,学起Verilog的语言很简单,关键要有并行的概念,所有的module,assign,always都是并行的,这一点与软件语言有明显不同。这里推荐几本评价比较好的学习Verilog的书籍:
①、《verilog 数字系统设计教程》,这本书对于入门是一本很好的书,通俗易懂,让人很快上手,它里面的例子也不错。但本书对于资源优化方面的编程没有多少涉及到。
②、《设计与验证Verilog HDL》,这本书虽然比较薄,但是相当精辟,讲解的也很深入,很多概念看了这本书有种豁然开朗的感觉,呵呵。
学习Verilog其实不用看很多书,基本的语法部分大家都一样,关键是要自己会灵活应用,多做练习。
Verilog语言学了一段时间,感觉自己可以编点东西,希望自己编的程序在板子上运行看看结果,下面就介绍我学习的第二个阶段。
刚开始我拿了实验室一块CPLD的开发板做练习,熟悉QuartusII的各种功能,比如IP的调用,各种约束设置,时序分析,Logiclock设计方法等,不过做到后面发现CPLD的资源不太够(没有内嵌的RAM、不能用SignalTapII,LE太少等),而实验室没有FPGA开发板,所以就萌生了自己做FPGA开发板的意图,刚好Cadence我也学的差不多了,就花了几天时间主要研究了FPGA配置电路的设计,在板子上做了Jtag和AS下载口,在做了几个用户按键和LED,其他的口全部引出作为IO口,电路比较简单,板子焊好后一调就通了(心里那个爽啊...)。我选的FPGA是cycloneII系列的EP2C5,资源比以前的FPGA多了好几倍,还有PLL,内嵌的RAM,可以试试SignalTapII,用内嵌的逻辑分析仪测试引脚波形,对于FPGA的调试,逻辑分析仪是至关重要的。利用这块板子我完成了项目中的几个主要功能:RS232通信,指令译码,配置DDS,AD数据高速缓存,电子开关状态设置等,在实践中学习起来真的比平时快很多,用到什么学什么动力更大。这个时候我主要看的数据有这几本感觉比较好:
①、《Altera FPGA/CPLD 设计(基础篇)》:讲解一些基本的FPGA设计技术,以及QuartusII中各个工具的用法(IP,RTL,SignalProbe,SignalTapII,Timing Closure Floorplan,chip Editor等),对于入门非常好。
②、《Altera FPGA/CPLD 设计(高级篇)》:讲解了一些高级工具的应用,LogicLock,时序约束很分析,设计优化,也讲述了一些硬件编程的思想,作为提高用。
③、《FPGA设计指南--器件,工具和流程》:这本书看了他的目录忍不住就买了,这本书讲述了FPGA设计的各个方面,虽然每个方面都是点到为止,但能让你有个整体的概念,了解FPGA的所有设计功能,了解FPGA开发的整个流程。
④、在这里也推荐几个学习FPGA比较好的论坛
http://www.xiexiebang.comt信号控制着w_fifo_rden、aes_ready等信号,是该模块的关键信号,通过将它们之间的时序关系通过时序图反应出来,写代码时就可以做到胸有成竹,减少出现逻辑混乱的情况。
听起来似乎很简单,但是执行起来却不容易,因为画波形图是一件很烦锁的事(有一次一个模块因为操作比较多我画了8张时序图)。但是请相信我,如果不这样做,因为时序关系没有处理好引起设计多次迭代所花的时间远多于画波形图的时间。
时序设计好之后,模块内部各个信号之间的关系就理得差不多了,之后就是将它翻译成代码了,这个过程以体力劳动为主,我就不多说了。
补充一下,画波形图推荐用TimingDesigner这个软件,如果有更好的,请告诉我,我也不喜欢TimingDesigner:)。
另一个就是约束。
这里的约束是针对综合软件和布局布线软件而言的。
为什么会有约束这个东西出现呢?主要原因是EDA软件比较笨,难以明白我们的心思,如果我们不把更详细的信息告诉它的话它就干不好活,比如需要将输出寄存器放的与输出管脚近一点,如果不加约束,EDA软件可能布通之后就不管了,导致Tco狂大,一点也不善解人意。所以我们需要约束这个东西,告诉EDA软件要怎么干活,工程验收的标准又是什么。
在加约束之前,我们首先要定义一些术语好告诉EDA软件我们想干什么,这些术语便是Fmax、Tsu、Tco等等这些东西。这些东西的含义这里就不多说了,网上的讨论已经很多了。
有了术语,还要有一种通信方式与EDA软件通信,脚本语言充当了这一角色。不过现在像quartus这类软件做的比较智能化了,提供了图形化界面,但是这背后支撑的还是些脚本语言,大家可以用UltraEdit打加*.qsf文件去看看我们加的约束用脚本语言是怎么写的。在加了约束之后,EDA工具就可以更好地按照我们的意愿去干活了,比较我们加了Fmax的约束,它就会尽可能地将关键路径放的靠近一些,以提高电路工作频率。当然,这是有代价的,寻找路径是需要时间的,要求越苛刻,时间花的越多,因此加约束的原则的适用就行。如果约束加的过高,就相当于让EDA工具去做一件不可能完成的事,找更短的路径的时候说不定找着找着就掉下悬崖了,效果反而更差。
虽然有约束这个好东西,不过提醒一下,在项目之前千万对它抱有太多的幻想,把希望寄托在别人的身上并不是每一次都很可靠的,出了问题还是要麻烦自己,加约束只能做一些锦上添花的事情。所以,我们在做方案的时候就需要对关键路径进行预估,要通过设计而不是约束解决这些问题。
第四篇:FPGA学习心得
回想起自己学FPGA,已经有一段时间了,从开始的茫然,到后来的疯狂看书,设计开发板,调电路,练习各种FPGA实例,到最后能独立完成项目,一路走来,感受颇多,拿出来和大家分享,顺便介绍下自己的一点经验所得,希望对初学者有所帮助。
废话不说了,下面进入正题,学习FPGA我主要经历了这么几个阶段:
①、Verilog语言的学习,熟悉Verilog语言的各种语法。
②、FPGA的学习,熟悉QuartusII软件的各种功能,各种逻辑算法设计,接口模块(RS232,LCD,VGA,SPI,I2c等)的设计,时序分析,硬件优化等,自己开始设计简单的FPGA板子。
③、NiosII的学习,熟悉NiosII的开发流程,熟悉开发软件(SOPC,NiosII IDE),了解NiosII的基本结构,设计NiosII开发板,编写NiosII C语言程序,调试板子各模块功能。
先来说说第一个阶段,现在主要的硬件描述语言有VHDL,Verilog两种,在本科时老师一般教VHDL,不过现在Verilog用的人越来越多,其更容易上手(与C语言语法比较类似),也更灵活,现在的IC设计基本都用Verilog。像systemC,systemVerilog之类的应该还在萌芽阶段,以后可能会有较大发展。鉴于以上原因我选择了Verilog作为我学习的硬件描述语言。
其实有C语言的基础,学起Verilog的语言很简单,关键要有并行的概念,所有的module,assign,always都是并行的,这一点与软件语言有明显不同。这里推荐几本评价比较好的学习Verilog的书籍:
①、《verilog 数字系统设计教程》,这本书对于入门是一本很好的书,通俗易懂,让人很快上手,它里面的例子也不错。但本书对于资源优化方面的编程没有多少涉及到。
②、《设计与验证Verilog HDL》,这本书虽然比较薄,但是相当精辟,讲解的也很深入,很多概念看了这本书有种豁然开朗的感觉,呵呵。
学习Verilog其实不用看很多书,基本的语法部分大家都一样,关键是要自己会灵活应用,多做练习。
Verilog语言学了一段时间,感觉自己可以编点东西,希望自己编的程序在板子上运行看看结果,下面就介绍我学习的第二个阶段。
刚开始我拿了实验室一块CPLD的开发板做练习,熟悉QuartusII的各种功能,比如IP的调用,各种约束设置,时序分析,Logiclock设计方法等,不过做到后面发现CPLD的资源不太够(没有内嵌的RAM、不能用SignalTapII,LE太少等),而实验室没有FPGA开发板,所以就萌生了自己做FPGA开发板的意图,刚好Cadence我也学的差不多了,就花了几天时间主要研究了FPGA配置电路的设计,在板子上做了Jtag和AS下载口,在做了几个用户按键和LED,其他的口全部引出作为IO口,电路比较简单,板子焊好后一调就通了(心里那个爽啊...)。我选的FPGA是cycloneII系列的EP2C5,资源比以前的FPGA多了好几倍,还有PLL,内嵌的RAM,可以试试SignalTapII,用内嵌的逻辑分析仪测试引脚波形,对于FPGA的调试,逻辑分析仪是至关重要的。利用这块板子我完成了项目中的几个主要功能:RS232通信,指令译码,配置DDS,AD数据高速缓存,电子开关状态设置等,在实践中学习起来真的比平时快很多,用到什么学什么动力更大。这个时候我主要看的数据有这几本感觉比较好:
①、《Altera FPGA/CPLD 设计(基础篇)》:讲解一些基本的FPGA设计技术,以及QuartusII中各个工具的用法(IP,RTL,SignalProbe,SignalTapII,Timing Closure Floorplan,chip Editor等),对于入门非常好。
②、《Altera FPGA/CPLD 设计(高级篇)》:讲解了一些高级工具的应用,LogicLock,时序约束很分析,设计优化,也讲述了一些硬件编程的思想,作为提高用。
③、《FPGA设计指南--器件,工具和流程》:这本书看了他的目录忍不住就买了,这本书讲述了FPGA设计的各个方面,虽然每个方面都是点到为止,但能让你有个整体的概念,了解FPGA的所有设计功能,了解FPGA开发的整个流程。
④、在这里也推荐几个学习FPGA比较好的论坛
⑤、其实最好的学习网站莫过于Altera的官方网站,不过很多人一看到英语就不想看,其实上面的英文很简单,很多时候不敢看是因为对自己没信心或心静不下来看。不过官方网站上资料很多,刚开始可能会觉得资料安排的有点乱,不方便查找,以后有时间我列个资料的链接目录,整理一下,方便大家查找。
到这里,自己最FPGA的学习有一段时间了,练习了很多实例,自己也编写了不少程序,也有了一些项目经验,算是对FPGA有些了解了。在不断的学习中发现FPGA不仅可以做逻辑设计,算法设计等,还能做嵌入式开发,altera先后开发了Nios,NiosII两款FPGA的嵌入式软核,并有配套的软件,刚开始看到这些我真是心中突然豁然开朗,学习真的是无止境,又一个全新的领域摆在我面前,我决定学习NiosII,要学就要学最好。
刚开始入门是很痛苦的,嵌入式设计需要从硬件到驱动到软件全部熟悉,硬件系统问题还不是很大(以前做过单片机,DSP等MCU),处理器的架构心里还有点数,对于驱动和软件工程,刚开始学习真的很头痛。NiosII应该还算比较新的内容(应该是2004年出的),国内的书籍不算很多,网上这方面的资料也比较零碎,所以我就开始将Altera网站上这方面的资料系统的看一边,这里推荐几本网站上的handbook:
①、Embedded Design Handbook
②、Nios II Processor Reference Handbook
③、Nios II Software Developer's Handbook
④、Quartus II Handbook, Volume 4: SOPC Builder
⑤、Quartus II Handbook, Volume 5: Embedded Peripherals
看完这些handbook,总算基本明白整个架构,软硬件设计方法,驱动的编写等,感觉自己可以编一些嵌入式的程序了,不过虽然前面做的那块ep2c5的板子支持NiosII系统,不过对于嵌入式设计来说还是显得单薄了一点,没有SDRAM,Flash这两个比较基本的模块,Ep2C5内嵌的RAM太小,程序写不大,而且每次总要绞尽脑汁优化程序代码大小,很多时候优化了后函数功能会受到限制,不利于初学者,也不利于调试。所以到这里我有产生了自己做一块Nios开发板的想法(直接买比较贵,自己做便宜,而且还能锻炼自己,一举两得),通过借鉴其他开发板,选择自己开发板上需要包含什么模块,确定各个模块使用什么芯片,阅读各个芯片的datasheet,画出原理图并做出PCB图,这块板子我选的是
Ep2c8Q208,比上一块资源又将近多了一倍,板子上还有以下模块:SDRAM,Flash,EPCS4,RS232,USB,VGA,PS2,AD,DA,LCD等,满足了一般开发板的配置要求。板子回来以后调试了四五天,(flash工作了,LCD显示了,RS232通了,USB通了,AD,DA工作了,SDRAM正常了...),真是每天都有惊喜,每个模块都编写了NiosII软件测试程序,调试硬件的时候对软件的运行也更熟悉了。在这次调试的过程中真的学到了很多,为此专门写了好几页调试笔记,下次拿出来和大家一起分享。现在硬件平台有了,NiosII也了解的差不多了,终于可以自己编写一些规模大一点的程序了。
以后的路还很长,不过也有很多惊喜在等着我们......
第五篇:FPGA常用术语
标题:FPGA常用术语
2010-05-13 11:16:29
FPGA常用术语
1:LCA(Logic Cell Array):逻辑单元阵列,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。
2: IOB(Input Output Block):可编程输入输出单元,为了便于管理和适应多种电器标准,FPGA的IOB被划分为若干个组(bank),每个bank的接口标准由其接口电压VCCO决定,一个bank只能有一种VCCO,但不同bank的VCCO可以不同。只有相同电气标准的端口才能连接在一起,VCCO电压相同是接口标准的基本条件。
3:CLB(Configurable Logic Block):可配置逻辑模块,是FPGA内的基本逻辑单元,每个CLB都包含一个可配置开关矩阵,此矩阵由4或6个输入、一些选型电路(多路复用器等)和触发器组成。在赛灵思公司公司的FPGA器件中,CLB由多个(一般为4个或2个)相同的Slice和附加逻辑构成。
4:Slice:是赛灵思公司公司定义的基本逻辑单位,一个Slice由两个4输入的函数、进位逻辑、算术逻辑、存储逻辑和函数复用器组成。
5:LUT(Look-Up-Table):查找表。本质上就是一个RAM,目前FPGA中多使用4输入的LUT,所以每一个LUT可以看成一个有4位地址线的 的RAM。
6:DCM(数字时钟管理模块):提供数字时钟管理和相位环路锁定。
7:BRAM(嵌入式块RAM):块RAM可被配置为单端口RAM、双端口RAM、内容地址存储器(CAM)以及FIFO等常用存储结构。单片块RAM的容量为18k比特,即位宽为18比特、深度为1024,可以根据需要改变其位宽和深度,但要满足两个原则:首先,修改后的容量(位宽 深度)不能大于18k比特;其次,位宽最大不能超过36比特。当然,可以将多片块RAM级联起来形成更大的RAM,此时只受限于芯片内块RAM的数量,而不再受上面两条原则约束。