做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就行了。

shop104791135.taobao.com

FPGA流程设计的更多相关文章

  1. FPGA/CPLD设计思想与技巧

    本文讨论的四种常用FPGA/CPLD设计思想与技巧:乒乓操作.串并转换.流水线操作.数据接口同步化,都是FPGA/CPLD逻辑设计的内在规律的体现,合理地采用这些设计思想能在FPGA/CPLD设计工作 ...

  2. 【转载】FPGA算法设计随笔

    FPGA设计算法依次需要完成MATLAB浮点仿真 MATLAB定点仿真 verilogHDL定点运算以及数据对比的流程.其中浮点到定点的转换尤为重要,需要在数据表示范围和精度之间做出权衡.另外掌握定点 ...

  3. FPGA重要设计思想

    FPGA重要设计思想   1.速度和面积互换原则.以面积换速度可以实现很高的数据吞吐率,其实串/并转换.就是一种以面积换速度的思想 2.乒乓操作. 3.串/并转换的思想. 高速数据处理的重要技巧之一. ...

  4. Atitit 修改密码的功能流程设计 attilax总结

    Atitit 修改密码的功能流程设计 attilax总结 1.1. 注意点1 1.2. 设计修改用户密码功能时把用户ID保存在哪里?1 1.3. Ui设计1 1.4. 功能设计源码1 1.5. Agt ...

  5. 审核流(2)流程设计-SNF.WorkFlow功能使用说明--SNF快速开发平台3.1

    流程设计 图形化的流程设计,更方便.直观 1.打开“流程设计“程序,如上.点击”新建“如下: 2.红色部分为必填项,审批对象是选择要审批的程序菜单,单据名称是在审核流流转时用于提示的单据名称,还要选择 ...

  6. asp.net 微信企业号办公系统-表单及流程设计配置实例

    在环境搭建好之后,我们就来学习一下怎样快速创建一个流程,并执行和流转该流程(我们这里讲的只是入门,不涉及到具体流程参数设置). 创建一个流程步骤为:在数据库在创建表-->设计表单-->设置 ...

  7. asp.net 微信企业号办公系统-流程设计--保存与发布

    如果流程未设计完时可以先保存,以后再打开接着设计.点击工具栏上的保存按钮即可保存当前流程设计: 如果下次要接着设计,则可以打开该流程继续设计: 如果流程设计完成,可以点击安装按钮来发布流程,流程安装成 ...

  8. asp.net 微信企业号办公系统-流程设计--流程步骤设置-策略设置

    策略设置包括当前步骤的流转方式,处理人员,退回策略等设置. 流转类型:当前步骤后面有多个步骤时,此类型选择可以决定后续步骤的发送方式. 1.系统控制:由系统根据您在线上设置的流转条件来判断该发送到哪一 ...

  9. FPGA高级设计——时序分析和收敛(转)

    何谓静态时序分析(Static Timing Analysis,简称STA)? 它可以简单的定义为:设计者提出一些特定的时序要求(或者说是添加特定的时序约束),套用特定的时序模型,针对特定的电路进行分 ...

随机推荐

  1. Debian9安装Metasploit

    参考博文:https://www.jianshu.com/p/ea0629b9e367 0x0 添加Kali源 deb http://http.kali.org/kali kali-rolling m ...

  2. 杭电1003 最大子串(第二次AC) 当作DP的训练吧

    Max Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

  3. DC-DC芯片

    KIS-3R33S:同步整流7V-24V转5V/3A DC-DC降压模块 稳压电源模块 效率超过LM2576

  4. AS布局篇

    LinearLayout 线性布局 RelativeLayout 相对布局 FrameLayout 帧布局 AbsoluteLayout绝对布局 TableLayout 表格布局 GridLayout ...

  5. 100w并发产生唯一随机id

    #coding=utf-8 import time import base64 import getopt import sys import threading import random impo ...

  6. The property does not exist in XML namespace

    自定义依赖属性,绑定在xaml文件中,无问题. 但是编译失败,报 The property does not exist in XML namespace 错误. 发现如果依赖属性定义在本程序集中,在 ...

  7. 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 ...

  8. HTML table表头排序箭头绘制法【不用箭头图片】

    效果图 代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="ut ...

  9. Linux命令:sed命令

    sed是一种流编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏 ...

  10. SpringBoot--⼯具表达式对象

    ⼯具表达式对象除了这些基本的对象之外,Thymeleaf将为我们提供⼀组⼯具对象,这些对象将帮助我们在表达式中执⾏常⻅任务.#execInfo:有关正在处理的模板的信息.#messages:⽤于在变量 ...