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)? 它可以简单的定义为:设计者提出一些特定的时序要求(或者说是添加特定的时序约束),套用特定的时序模型,针对特定的电路进行分 ...
随机推荐
- Debian9安装Metasploit
参考博文:https://www.jianshu.com/p/ea0629b9e367 0x0 添加Kali源 deb http://http.kali.org/kali kali-rolling m ...
- 杭电1003 最大子串(第二次AC) 当作DP的训练吧
Max Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Sub ...
- DC-DC芯片
KIS-3R33S:同步整流7V-24V转5V/3A DC-DC降压模块 稳压电源模块 效率超过LM2576
- AS布局篇
LinearLayout 线性布局 RelativeLayout 相对布局 FrameLayout 帧布局 AbsoluteLayout绝对布局 TableLayout 表格布局 GridLayout ...
- 100w并发产生唯一随机id
#coding=utf-8 import time import base64 import getopt import sys import threading import random impo ...
- The property does not exist in XML namespace
自定义依赖属性,绑定在xaml文件中,无问题. 但是编译失败,报 The property does not exist in XML namespace 错误. 发现如果依赖属性定义在本程序集中,在 ...
- nginx的access的阶段的access模块、auth_basic模块、auth_request模块及satisfy指令介绍
access 模块 示例从上向下匹配 location / { deny 192.168.1.1; allow 192.168.1.0/24; allow 10.1.1.0/16; allow 200 ...
- HTML table表头排序箭头绘制法【不用箭头图片】
效果图 代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="ut ...
- Linux命令:sed命令
sed是一种流编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏 ...
- SpringBoot--⼯具表达式对象
⼯具表达式对象除了这些基本的对象之外,Thymeleaf将为我们提供⼀组⼯具对象,这些对象将帮助我们在表达式中执⾏常⻅任务.#execInfo:有关正在处理的模板的信息.#messages:⽤于在变量 ...