《7天搞定FPGA》—Robei与Xilinx实战之前言介绍
《7天搞定FPGA》—Robei与Xilinx实战
思想前言
集成电路设计软件目前在世界上只有几家公司在做,普遍分布在欧美等国家,中国的集成电路设计软件长期依赖于盗版和进口。“工欲善其事,必先利其器”,中国要想大力发展集成电路产业,首先要有自主知识产权的集成电路设计工具。
Robei是一款全新的拥有自主知识产权的集成电路设计工具,不仅具备传统的设计工具的代码编写、编译、仿真功能,更增加了可视化和模块化设计理念,具有模块设计透明化,方便模块重新利用,加快设计进度的特点。
传统的集成电路设计工具庞大、复杂、难用、很不容易入门。初学者将会经历感兴趣 迷茫 头疼 失去兴趣 悟道 加深兴趣 痴迷的过程,其中很大一批人在中间过程中就放弃了继续学习。Robei可以让初学者平稳而快速的过渡到悟道阶段,并提出7天搞定FPGA的方案。Robei为初学者扫平了学习集成电路的荆棘,将泥泞的土路打造成了高铁,为更多人在集成电路学习的道路上保驾护航。
传统的书籍都是由专家撰写,他们的知识体系已成系统,很多内容让初学者摸不清头脑,本书采用了初学者教初学者的方式,案例大部分是由初学者在学习过程中设计出来,然后把自己的学习心得编写成案例。因为了解初学者心理的一定是初学者,而非专家学者。本书将会随着初学者的增多,案例的增多,变得更加精炼,更加贴合读者的发展。
由于编写时间仓促,编者水平有限,书中难免出现纰漏和错误,敬请批评指正。本书仅供读者学习参考使用。
在本书付梓之际,谨向为本书付出辛勤劳动的青岛若贝电子有限公司的工作人员致以诚挚的谢意!
简 介
软件:Robei可视化芯片设计软件
Robei是一款可视化的跨平台EDA设计工具,具有超级简化的设计流程,最新可视化的分层设计理念,透明开放的模型库以及非常友好的用户界面。Robei软件将芯片设计高度抽象化,并精简到三个基本元素,掌握这三个基本元素,就能很快地掌握Robei的使用技巧。该软件将先进的图形化与代码设计相融合,让框图与代码设计优势互补,弱势相互抵消。Robei软件是目前世界上最小的芯片设计仿真工具,也是唯一一个能在移动平台上设计仿真的EDA工具。它不依赖于任何芯片,在仿真后自动生成Verilog代码,可以与其它EDA工具无缝衔接。Robei以易用(Easy to use)和易重用(Easy to reuse)为基础,是一款为芯片设计工程师量身定做的专用工具。
目 录
第一章:认识工具,掌握基础
#1.1 为什么要选择Robei
1.1.1. 背景介绍
1.1.2. EDA的发展史
1.1.3. Robei的优势
1.2 安装与注册
1.2.1. 安装
1.2.2. 注册
1.3 如何使用Robei
1.3.1. 菜单和工具条
1.3.2. 工具箱
1.3.3. 属性栏
1.3.4. 工作空间
1.3.5. 输出
1.4 Robei三元素
1.4.1. 模块
1.4.2. 引脚
1.4.3. 连接线
1.5 Verilog基础
1.5.1. 数据
1.5.2. 运算符
1.5.3. 结构声明**
- 模块定义
- 引脚定义
- 连接线
- 例化
1.5.4. 代码撰写
1 赋值语句
2分支语句
3.循环语句
4.初始化与重复执行
5.阻塞式赋值与非阻塞式赋值
**1.5.5. 一个模块的总结 **
1.6. 第一天的总结
第二章:实例入手,体验若贝
2.1 实例一 逻辑门设计
2.1.1. 本章导读
2.2.2. 设计流程
1. 模型设计
2. 测试文件设计
2.1.3. 问题与思考
2.1.4. 常见问题
2.2 实例二 计数器
2.2.1. 本章导读
2.2.2. 设计流程
- 模型设计 44
- 测试文件设计
2.2.3. 问题与思考
2.3 实例三 编译码器
2.3.1. 本章导读
2.3.2. 设计流程
- 编码器模型设计
- 译码器模型设计
- 测试文件设计
2.3.3. 问题与思考
2.4 实例四 ALU设计
2.4.1. 本章导读
2.4.2. 设计流程
- ALU模型设计
- 测试文件设计
- 16位ALU设计
- 32位ALU设计
2.4.3. 问题与思考
第三章:动手实战,板上点灯
3.1 实例五 Robei和Vivado的联合设计——流水灯设计
3.1.1. 本章导读
3.1.2. Robei设计内容
- light模型设计
- light_tb测试文件的设计
- light_constrain约束文件的设计
3.1.3. Vivado设计内容
- 工程创建
- 使用Vivado综合工具来综合设计并且分析项目主要输出
- 使用Vivado实现设计的分析以及项目摘要输出
- 将设计在开发板上实现
3.1.4. 总结
3.2 实例六 自动售饮料机
3.2.1. 本章导读
3.2.2. 设计流程
- sell模块的设计
- sell_test测试文件设计
- sell_constrain约束文件设计
3.2.3. 板级验证
- VIVADO设计平台进行后端设计
- 开发板验证
3.2.4. 问题与思考
第四章:复杂运算,板级体验
4.1 实例七 8位移位寄存器的设计
4.1.1. 本章导读
4.1.2. 设计流程
- shift模型设计
- shift_test测试文件设计
- shift_constrain测试文件的设计
4.1.3. 板级验证 - VIVADO设计平台进行后端设计
- 开发板验证
4.1.4. 问题与思考
4.2 实例八 带符号位小数的加法设计
4.2.1. 本章导读
4.2.2. 设计流程
- qadd模型设计
- qadd_test测试文件的设计
- 约束模块和约束文件设计
4.2.3. 板级验证 - VIVADO设计平台进行后端设计
- 开发板验证
4.2.4. 问题与思考
4.3 实例九 除法器设计
4.3.1. 本章导读
4.3.2. 设计流程 - divider模型设计
- divider_test测试文件的设计
- divider_constrain约束文件的设计
4.3.3. 板级验证 - VIVADO设计平台进行后端设计
- 开发板验证
4.3.4. 问题与思考
第五章:认识协议,操作接口
5.1 实例十 FIFO
5.1.1. 本章导读
5.1.2. 设计流程
- 模型设计
- 测试模块设计
- 约束模块设计
5.1.3. 板级验证 - VIVADO设计平台进行后端设计
- 开发板验证
5.1.4. 问题与思考
5.2 实例十一 SPI总线接口的verilog的实现
5.2.1. 本章导读
5.2.2. 设计流程 - spi_master模型设计
- spi_master_tb测试文件的设计
5.2.3. SPI接口协议的板级验证
5.2.4. 问题与思考
第六章:串口通信,系统设计
6.1 实例十二 UART的发送与接收模块设计
6.1.1. 本章导读
6.1.2. 设计流程
- 接收模块的设计
- UARTTEST测试文件的设计
- 发送模块设计
- UARTsendtest测试文件的设计
6.1.3. 问题与思考
6.2 实例十三 Natalius 8位RISC处理器
6.2.1. 本章导读
6.2.2. 设计流程 - ALU模型设计
- stack模型设计
- data_supply模型设计
- zc_control模型设计
- data path模型设计
- instruction memory 模型设计
- control unit模型设计
- Natalius processor模型设计
- processor_test 测试文件的设计
6.2.3. 问题与挑战
第七章:总结反思,项目挑战
参考文献
鸣 谢
- 初识Shiro
- 在网页里点击链接,直接打开app的方法
- 常用算法比较,js实现
- Exploiting Jolokia Agent with Java EE Servers
- AngularJS数据源的多种获取方式汇总
- 跨站的艺术-XSS入门与介绍
- 堆排序
- 两个元素定位,要求子元素垂直居中
- 在Spring Boot框架下使用WebSocket实现消息推送
- Linux上安装Zookeeper以及一些注意事项
- Nginx+Tomcat搭建集群,Spring Session+Redis实现Session共享
- Shiro中的授权问题(二)
- Shiro中的授权问题
- Spring Cloud中服务的发现与消费
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android ImageView的selector效果实例详解
- 完美解决关于禁止ViewPager预加载的相关问题
- Android开发之OpenGL绘制2D图形的方法分析
- Android实现RecyclerView下拉刷新效果
- 详解 Android中Libgdx使用ShapeRenderer自定义Actor解决无法接收到Touch事件的问题
- Android Shader应用开发之雷达扫描效果
- Android开发之绘制平面上的多边形功能分析
- Android Surfaceview的绘制与应用
- Android SQLite数据库版本升级的管理实现
- Android自定义view实现拖拽选择按钮
- Android 中ViewPager中使用WebView的注意事项
- Android IPC机制Messenger实例详解
- Android开发之文本内容自动朗读功能实现方法
- 深入理解Android中View绘制的三大流程
- Android LocationManager获取经度与纬度等地理信息