FPGA流程设计
做fpga也有四年时间了,该有个总结。刚开始那会,学习东西都是死记硬背,去面试也是直接带着答案去了。
时间久了,才懂得设计一些基本思路。
1. 设计输入:
verilog代码和原理图。画原理图都是懒得做visio架构图的。一般来说设计fpga开始都要有个系统设计架构图。设计原理图也有缺陷,每个软件不能通用,关键每次版本升级以后,原理图容易出问题。
写verilog的代码,比较累,写连接线,最烦就是怕重复定义,怕位数不对。关键设计初期,要学会总体规划,模块分配。
2.功能仿真
功能仿真用modelsim,写个测试文件。
初学者,写测试文件是很苦逼的事情。几千行代码,慢屏幕的 #时间 驱动.自己还得看仿真后的波形,手动调节时间参数。每次RTL代码一改动,时间需要相当累。
功底到了一定阶段,你就会放弃这种垃圾的测试方法。在测试代码开始写RTL 代码,或者跟跟随多次时钟。写的很多,直接使用存储表的文件直接测试,查看结果。
不过技术如何,波形仿真一定要做,要看清初始化状态。没有初始化的信号。
3.约束
约束包括时钟约束。IO引脚约束,内部布线资源约束。时钟约束,大部分人都知道。为了内部的RAM,移位寄存器,加法器,乘法器规定速度工作,你必须要约束这些时钟线。
IO引脚约束是包括引脚锁定,IO寄存器约束。引脚锁定,这些大家都知道,没引脚锁定,你下载到fpga是没有工作的。IO寄存器约束知道的人甚少了。当你使用GMII和RGMII,SDRAM,DDR2,你知道多苦逼的事情。因为你不约束他们,他们总线跟时钟是无法在规定时间变化的,fpga也不知道采集数据是否正确,在时钟沿前多少,后应该多少,总线才能完全翻转过来。
4.后仿真
我开始搞fpga,也学我以前主管,写好代码,做完功能仿真,就用signaltaP了。后来搞cpld之后,功能仿真正确,下进去之后,出问题不知道怎么调试。后来使用软件编译生成后仿真,才会用CPLD。
后仿真,基本没什么文章说这个问题。有人看了红色信号,不输出信号总不知道什么问题。那就是时序违规,仿真软件判断违规时序的。问题在于。第一个,时钟约束达不到,第二个,IO约束达不到。
5.硬件调试。
很多用了xilinx和altera都觉得自己懂fpga很深了,就是有了内部探测工具。但估计没有多少人去了解上电触发,表达式控制方法。有的信号,上电就挂了,有人用一个十几秒的延时等待。你让编译器累死,时序也会导致不满足。还有不会多个表达式的,看个信号,只要前后,搞缓存特大也看不到,苦逼吧。
6. 下载编程。加密。
下载编程,线一连,点下program就行了。
FPGA流程设计的更多相关文章
- FPGA/CPLD设计思想与技巧
本文讨论的四种常用FPGA/CPLD设计思想与技巧:乒乓操作.串并转换.流水线操作.数据接口同步化,都是FPGA/CPLD逻辑设计的内在规律的体现,合理地采用这些设计思想能在FPGA/CPLD设计工作 ...
- 【转载】FPGA算法设计随笔
FPGA设计算法依次需要完成MATLAB浮点仿真 MATLAB定点仿真 verilogHDL定点运算以及数据对比的流程.其中浮点到定点的转换尤为重要,需要在数据表示范围和精度之间做出权衡.另外掌握定点 ...
- FPGA重要设计思想
FPGA重要设计思想 1.速度和面积互换原则.以面积换速度可以实现很高的数据吞吐率,其实串/并转换.就是一种以面积换速度的思想 2.乒乓操作. 3.串/并转换的思想. 高速数据处理的重要技巧之一. ...
- Atitit 修改密码的功能流程设计 attilax总结
Atitit 修改密码的功能流程设计 attilax总结 1.1. 注意点1 1.2. 设计修改用户密码功能时把用户ID保存在哪里?1 1.3. Ui设计1 1.4. 功能设计源码1 1.5. Agt ...
- 审核流(2)流程设计-SNF.WorkFlow功能使用说明--SNF快速开发平台3.1
流程设计 图形化的流程设计,更方便.直观 1.打开“流程设计“程序,如上.点击”新建“如下: 2.红色部分为必填项,审批对象是选择要审批的程序菜单,单据名称是在审核流流转时用于提示的单据名称,还要选择 ...
- asp.net 微信企业号办公系统-表单及流程设计配置实例
在环境搭建好之后,我们就来学习一下怎样快速创建一个流程,并执行和流转该流程(我们这里讲的只是入门,不涉及到具体流程参数设置). 创建一个流程步骤为:在数据库在创建表-->设计表单-->设置 ...
- asp.net 微信企业号办公系统-流程设计--保存与发布
如果流程未设计完时可以先保存,以后再打开接着设计.点击工具栏上的保存按钮即可保存当前流程设计: 如果下次要接着设计,则可以打开该流程继续设计: 如果流程设计完成,可以点击安装按钮来发布流程,流程安装成 ...
- asp.net 微信企业号办公系统-流程设计--流程步骤设置-策略设置
策略设置包括当前步骤的流转方式,处理人员,退回策略等设置. 流转类型:当前步骤后面有多个步骤时,此类型选择可以决定后续步骤的发送方式. 1.系统控制:由系统根据您在线上设置的流转条件来判断该发送到哪一 ...
- FPGA高级设计——时序分析和收敛(转)
何谓静态时序分析(Static Timing Analysis,简称STA)? 它可以简单的定义为:设计者提出一些特定的时序要求(或者说是添加特定的时序约束),套用特定的时序模型,针对特定的电路进行分 ...
随机推荐
- 快速创建vue 项目
随着VUE 技术的不断更新,越来越多的开发者开始使用vue编写前端界面,今天我就和大家分享一下 ,如何快速创建一个vue项目. 前提: 安装了node.js 首先: 全局安装vue-cli 使用命令: ...
- python邮箱发送
普通发送邮件 使用email模块和stmplib模块,内容比较固定,配好了即可实现,代码如下 一.普通邮箱发送 # -*- coding:utf-8-*- import smtplib from em ...
- Java连载66-数组的两种初始化方式
一.数组 1.数组中存储元素的类型是统一的,每一个元素在内存中所占用的空间大小是相同的,知道数组的首元素的内存地址,要查找的元素只要知道下标,就可以快速的计算出偏移量,通过首元素内存地址加上偏移量,就 ...
- Flask - 底层原理和基本流程
一. flask依赖wsgi,实现wsgi的模块:wsgiref(django),werkzeug(flask),uwsgi 1. werkzeug示例 from werkzeug.wrappers ...
- 【协作式原创】自己动手写docker之run代码解析
linux预备知识 urfave cli预备知识 准备工作 阿里云抢占式实例:centos7.4 每次实例释放后都要重新安装go wget https://dl.google.com/go/go1.1 ...
- SSD boot test script for(if)循环
;Author : Bing Song ;// ;Usage: modify log drictory according to actual drictory gettime timestr &qu ...
- Simple English
Simple English 1. Basic English 1.1 设计原则: 1.2 基本英语单词列表850个 1.3 规则: 1.4 质疑 1.5 维基百科:基本英语组合词表 1.6 简单英文 ...
- [理解] Linux 作为一个服务器是怎样的存在 (一)
长期以来我就一直有一个疑问, 为什么当我们选择使用服务器的时候都会选择 Linux 作为操作系统, 以至于只要说到服务器就会不由自主的想到Linux, 那么Linux到底是什么呢? 当然我也不会妄谈天 ...
- CSP2019 括号树
Description: 给定括号树,每个节点都是 ( 或 ) ,定义节点的权值为根到该节点的简单路径所构成的括号序列中不同合法子串的个数(子串需要连续,子串所在的位置不同即为不同.)与节点编号的乘积 ...
- windows下pycharm连接vagrant的python环境