【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        前面说过,fpga上面最基础的部分是寄存器,而所有寄存器存在每一个clock下,都有被翻转的可能性。至于这些寄存器是不是真的翻转,或者说是保持不变,取决于当时的状态。所以在clock运行的区间内,我们习惯于把任务切分成若干个状态,不同状态下的register是不一样的,当然只有一部分register参与工作,大部分保持不变。等到条件成熟的时候,再切换到下一个状态。这就是fpga下状态机运行的基本原理。

1、时序逻辑是基础

        寄存器是fpga的基本电路。或者可以这么说,fpga的基本构成就是一个一个的时序逻辑。这些时序逻辑或者置0,或者置1,或者取反,或者保持不变。针对这些寄存器的运算,那就是组合逻辑。当然组合逻辑不能链路太长,否则影响时序。除了寄存器的运算之外,组合逻辑的另外一个信号来源就是外部输入。所有的外部输入都可以看成是组合逻辑。

2、组合逻辑是辅助

        时序逻辑可以保证,信号在clock的周期内保持不变,这是极为重要的特性。如果信号随时发生改变,那也就没有办法参与运算了,因为很多的运算本身就是依赖于其他信号的存在,这样才会一步一步向前推进,而组合逻辑则不一样。

        就拿外部信号举例,假设来一个gpio信号,fpga正常运行,此时由于gpio优先级高,那么下一个clock就要优先处理这个gpio。但是如果下一个clock来临之前,又有一个gpio信号出来。不失一般性,前者命名为signal A,后者命名为signal B,那么此时就会发生仲裁,如果signal B优先级高,下一次优先处理的信号就是signal B。在clock之间的这段时间,时序电路是不变的,但是组合逻辑可能随时由于外部的输入而发生变化,这就是组合逻辑的特点。

3、clock和rst是最重要的两个信号

        clock是寄存器的发动机,它推动着寄存器,或者是时序电路不停向前走。形象一点比喻,它就类似于交响乐队的指挥棒,每一个演奏者都要跟着这个指挥棒进行操作。而rst就是复位信号,在板子还没有启动的时候,或者说clock还不稳的时候,rst保证了信号最初始的一个状态。所以,正是由于clock和rst的存在,让fpga可以按照我们的设计来处理各种各样的信号。

4、小模块的状态机和系统状态机

        状态机不仅仅是小模块可以使用,大模块也可以使用。在小模块里面,不同状态下,相当于一部分register参与运算,另外一部分register不参与运算。而在大模块下,则相当于一部分模块参与运算,另外一部分模块不参与运算。本质上,两者是一样的。

5、从波形到代码,再到波形

        了解了时序逻辑、组合逻辑和状态机之后,我们发现fpga的颗粒度很低,本质上,它就是一个信号计算器。抽象出来,就是一个一个波形。所以,如果我们需要设计什么功能,可以先设计出原型、状态机,或者是自己先把波形画出来,接着把这些波形转成verilog代码,最后在仿真测试、实际测试,验证一下实际的波形和设计的波形是不是同一个,这样就可以验证自己写的到底对不对,是设计的问题、写的问题、还是测试的问题。

6、时刻牢记寄存器的并发性

        fpga最大的不同,就是寄存器的并发性。只要有时钟在驱动,所有寄存器就有翻转、改变的可能性。至于是不是真的改变,完全取决于当时的状态。所以编写verilog的时候,可以考虑下,当前信号属于什么信号,什么时候复位,什么时候改变,改变的时候属于什么状态,什么时候又保持不变,这样不停思考下去,fpga才能越写越好,越写越稳定。

        不同的task,一旦发现数据合法性不对,就立马恢复到初始状态。等到所有input和register都ok之后,再去开始对应的工作,这样就可以让fpga一直稳定地运行下去。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/90872.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/90872.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/90872.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TCP如何解决网络切换问题

一、传统TCP的网络切换问题核心问题:TCP 连接基于四元组(源IP、源端口、目的IP、目的端口),IP 变化导致连接失效二、改进方案与技术演进1. MPTCP(多路径TCP) - 主流解决方案核心机制:单连接多路…

【Linux】常用命令(一)

【Linux】常用命令 一1. ls1.1 ls -a 显示所有文件及其目录1.2 ls -A 不显示当前目录和父目录1.3 ls -d 显示目录本身,而不是显示其内部内容1.4 ls -i 显示文件的inode属性信息1.4.1 实际用途场景1.5 ls -l 显示文件的详细属性信息1.6 ls -R 递归显示所有子文件1.7 …

Window 部署 coze-stdio(coze 开发平台)

参考链接 https://github.com/coze-dev/coze-studio/wiki/2.-%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B https://github.com/coze-dev/coze-studio/wiki/3.-%E6%A8%A1%E5%9E%8B%E9%85%8D%E7%BD%AE 环境说明 Docker:28.3.2 系统:Window 11 配置要求 CP…

【Git】Git LFS的使用

一、简介 Git LFS(Git Large File Storage)是由 GitHub 开发的一款 Git 扩展工具,旨在帮助开发者更高效地管理仓库中的大文件。传统 Git 会将文件的每个版本完整存储在仓库历史中,导致大文件(如音频、视频、数据集、二…

不坑盒子:Word里1秒制作“花括号”题目,多音字组词、形近字组词……

1. 30秒看懂它能干啥 用“不坑盒子”插件,在 Word 里输入: 乐,l(快乐),yu(音乐);长,chng(长短),zhǎng(长大)点一下【总分关系】,瞬间出现左边是“乐”右边并列两行拼音括号的花括号结构;再点【并列关系】,又能做出只…

Gateway网关层灰度方案—xx互联网医院系统灰度发布设计与思路详解

通过之前技术的积累,终于开始了本文的编写,如果对灰度、负载均衡、上下文传递、网关不太理解,可以先学习博主的以下博客内容。共勉: 企业级 Java 应用灰度发布设计方案与实践全解析《Spring 中上下文传递的那些事儿》 Part 1&…

学习游戏制作记录(改进投掷剑的行为)7.27

1.实现剑跟随飞行方向旋转修改剑的预制体使剑的朝向对准右x轴Sword_Skill_Contorl脚本:private void Update(){transform.right rb.velocity;//时刻更新位置}2.实现剑插入地面或者敌人修改预制体为触发器Sword_Skill_Contorl脚本:private bool canRotat…

嵌入式软件面试八股文

目录 一、指针函数和函数指针 二、指针的大小 三、sizeof 和 strlen 区别 四、数组指针和指针数组 五、C语言里面内存分配的方式 六、struct结构体和union联合体的区别 八、数组和链表的区别 九、写一个宏这个红返回输入参数比较小的一个 十&#xff0c;使用#include<…

Gradle#Plugin

查看任务来自那个插件 /gradlew tasks --all <taskName>Java Plugin Java Library Plugin

渗透高级-----测试复现(第三次作业)

文章目录测试复现一&#xff0c;环境搭建二&#xff0c;通过VS Code连接cacti三&#xff0c;测试测试复现 一&#xff0c;环境搭建 1&#xff0c;在ubuntu虚拟机上安装MySql数据库&#xff1a; apt-get upgrade # 更新apt-get upgrade apt-get update # 更新apt-ge…

LINUX727 磁盘管理回顾1;配置文件回顾

逻辑卷快照 快照为什么这么小RAID 磁盘阵列 raid 0 raid 1 raid5 raid10raid0 raid1 raid5 raid6 raid10 rank;create raid0 mdadm -c /dev/md0 -l 0 -n 2 /dev/sdb3 /dev/sdb4 raid1 mdadm -c /dev/md1 -l 1 -n 2 /dev/sdb5 /dev/sdb6 raid5 mdadm -c /dev/md5 -l 5 -n 3 -x …

【笔记】Einstein关系式 D = ukBT 的推导与应用研究

文章目录从涨落理论和能量均分定理的数学推导基于平衡统计力学的推导1. 漂移流的来源&#xff1a;Jdrift−μρ∇UJ_{drift} -μρ∇UJdrift​−μρ∇U物理机制粒子流的形成2. 扩散流的来源&#xff1a;Jdiffusion−D∇ρJ_{diffusion} -D∇ρJdiffusion​−D∇ρ3. 热平衡要…

AJAX 原理_第一节_XHR 对象

文章目录1.AJAX原理1.1 初识XML1.2 查询参数1.3 案例-地区查询1.4 案例-注册-设置请求头1.AJAX原理 1.1 初识XML AJAX原理是什么? XMLHttpRequest对象 XHR对象定义: 通过XMLHttpRequest可以在不刷新页面的情况下请求特定URL,获取数据.这允许页面在不影响用户操作的情况下,更…

BeautifulSoup 使用详解与实战示例

BeautifulSoup 是一个用于解析HTML和XML文档的Python库&#xff0c;它能够将复杂的HTML文档转换成一个复杂的树形结构&#xff0c;使得我们可以轻松地查找和提取所需的内容。下面我将详细介绍BeautifulSoup的使用流程&#xff0c;并结合实际示例进行说明。一、安装与基础使用1.…

LangChain实战——实现多轮对话 + Function Calling

随着大语言模型&#xff08;LLMs&#xff09;的迅猛发展&#xff0c;“Function Calling”&#xff08;函数调用&#xff09;逐渐成为一个重要的能力&#xff0c;它使得模型不仅能聊天&#xff0c;还能像“中控大脑”一样调用外部函数完成具体任务&#xff0c;比如查天气、调用…

湖南(源点咨询)市场调研 如何在行业研究中快速有效介入 起头篇

行业研究从业人员经常需要在承接研究案子后快速的摸清委托方所在行业。而俗话说&#xff0c;隔行如隔山&#xff0c;快速了解行业&#xff0c;主要用于行业分析报告及为市场细分准入进行前期铺垫&#xff0c;要想摸清一个行业&#xff0c;需要长期持续的跟踪。了解一个行业&…

【c++】从 “勉强能用” 到 “真正好用”:中文问答系统的 200 行关键优化——关于我用AI编写了一个聊天机器人……(16)

先看核心结论&#xff1a;两段代码的本质区别如果用一句话总结两段代码的差异&#xff1a;前者是 “带中文支持的问答系统”&#xff0c;后者是 “真正适配中文的问答系统”。具体来说&#xff0c;两段代码的核心功能都是 “加载问答数据→接收用户输入→匹配答案”&#xff0c…

VR 技术在污水处理领域的创新性应用探索​

在广州&#xff0c;VR 污水处理技术的应用可谓是多点开花。首先&#xff0c;在污水处理流程模拟方面&#xff0c;工程师们利用 VR 技术创建了高度逼真的污水处理厂三维模型&#xff0c;将污水处理的整个流程&#xff0c;从预处理去除大颗粒杂质和悬浮物&#xff0c;到初级处理通…

深度学习暑期科研项目(两个月发EI论文)

深度学习暑期科研项目&#xff08;8周发EI论文&#xff09; 哈尔滨工业大学博士的六大选题对本科生而言&#xff0c;越早接触系统的科研训练开始上手科研项目&#xff0c;就越能在未来的升学求职中占据很大的优势。暑假是提升个人简历、丰富科研经历的最佳时期&#xff01;哈尔…

【RH134 问答题】第 1 章 提高命令行运行效率

目录#!/bin/bash 是什么意思&#xff1f;PATH 变量有什么重要作用&#xff1f;echo 命令的作用是什么&#xff1f;解释下列正则表达式的含义简述正则表达式和 shell 模式匹配的区别&#xff0c;在 shell 命令使用正则表达式的时候需要注意什么&#xff1f;#!/bin/bash 是什么意…