FPGA练习
文章目录
- 一、状态机思想写一个 LED流水灯的FPGA代码
- 二、 CPLD和FPGA芯片的主要技术区别是什么? 它们各适用于什么场合?
- 1、CPLD适用场景
- 2、FPGA适用场景
- 三、 在hdlbitsFPGA教程网站上进行学习
- 1、练习题1
- 2、练习题2
- 练习题3
- 练习题4
- 练习题5
一、状态机思想写一个 LED流水灯的FPGA代码
module led_flow (input clk, // 时钟(DE2-115默认50MHz)input rst_n, // 复位信号(低有效)output reg [7:0] led // 8位LED输出
);// 状态定义:4个状态循环
parameter S0 = 2'b00, S1 = 2'b01, S2 = 2'b10, S3 = 2'b11;
reg [1:0] state, next_state;// 分频计数器:控制状态切换速度(约0.5秒)
reg [24:0] cnt;
always @(posedge clk or negedge rst_n) beginif (!rst_n) cnt <= 0;else cnt <= cnt + 1;
end// 状态转移逻辑
always @(posedge clk or negedge rst_n) beginif (!rst_n) state <= S0;else if (cnt == 25'd25_000_000) state <= next_state;
end// 状态转移条件
always @(*) begincase (state)S0: next_state = S1;S1: next_state = S2;S2: next_state = S3;S3: next_state = S0;default: next_state = S0;endcase
end// 输出逻辑(Moore型)
always @(*) begincase (state)S0: led = 8'b0000_0001;S1: led = 8'b0000_0010;S2: led = 8'b0000_0100;S3: led = 8'b0000_1000;default: led = 8'b0000_0001;endcase
endendmodule
仿真测试代码
`timescale 1ns/1ns
module tb_led_flow();reg clk, rst_n;
wire [7:0] led;led_flow uut (clk, rst_n, led);initial beginclk = 0;forever #10 clk = ~clk;
endinitial beginrst_n = 0;#100 rst_n = 1; // 释放复位#50000000 $finish; // 仿真运行约1秒(50MHz时钟)
endinitial begin$monitor("Time=%t, led=%b", $time, led);
endendmodule
二、 CPLD和FPGA芯片的主要技术区别是什么? 它们各适用于什么场合?
1、CPLD适用场景
简单逻辑控制
接口转换(如UART、SPI协议桥接)
状态机实现(电梯控制、交通灯系统)
低复杂度信号处理
数字信号滤波
简单的时序逻辑(计数器、分频器)
快速响应系统
工业实时控制(PLC模块)
电源管理(上电时序控制)
非易失性需求
车载电子(断电后配置保留)
嵌入式系统的引导逻辑
2、FPGA适用场景
高复杂度算法加速
图像处理(HDR、边缘检测)
通信协议(5G基带处理、加密算法)
大规模并行计算
数据中心加速(AI推理、数据库优化)
科学计算(矩阵运算、FFT变换)
动态可重构系统
软件定义无线电(SDR)
自适应硬件(运行时逻辑切换)
ASIC原型验证
芯片流片前的功能验证
复杂IP核(CPU、GPU)的仿真
三、 在hdlbitsFPGA教程网站上进行学习
1、练习题1
构建一个没有输入和一个输出的电路。该输出应始终驱动 1 (或 logic high)。
module top_module( output one );// Insert your code hereassign one = 1'b1;endmodule
2、练习题2
创建一个具有一个 input 和一个 output 的模块,其行为类似于一条线。
module top_module( input in, output out );// 连续赋值:输出端口out始终跟随输入端口in的变化assign out = in;
endmodule
练习题3
创建一个具有 3 个输入和 4 个输出的模块,其行为类似于进行以下连接的电线:
a -> w
b -> x
b -> y
c -> z
module top_module( input a,b,c,output w,x,y,z );// 直接连接各个端口assign w = a; // 输入a直连输出wassign x = b; // 输入b直连输出xassign y = b; // 输入b直连输出yassign z = c; // 输入c直连输出z
endmodule
练习题4
创建一个实现 AND 门的模块。
此电路现在有三根线(、 和 )。Wires 和 already has values driven by the input ports.但 wire 目前不受任何因素驱动。编写一个使用信号 和 的 AND 驱动的语句。aboutaboutassignoutab
module top_module( input a, input b, output out );// 使用连续赋值语句驱动输出assign out = a & b; // 按位与操作符endmodule
练习题5
创建一个实现 NOR 门的模块。NOR 门是输出反转的 OR 门。用 Verilog 编写 NOR 函数时需要两个运算符。
module top_module( input a, input b, output out );// 使用 OR 运算符和取反运算符组合实现 NOR 门assign out = ~(a | b); // 先执行 OR 运算再取反endmodule
相关文章:
FPGA练习
文章目录 一、状态机思想写一个 LED流水灯的FPGA代码二、 CPLD和FPGA芯片的主要技术区别是什么? 它们各适用于什么场合?1、CPLD适用场景2、FPGA适用场景 三、 在hdlbitsFPGA教程网站上进行学习1、练习题12、练习题2练习题3练习题4练习题5 一、状态机思想…...
阿里云服务器遭遇DDoS攻击有争议?
近年来,阿里云服务器频繁遭遇DDoS攻击的事件引发广泛争议。一方面,用户质疑其防御能力不足,导致服务中断甚至被迫进入“黑洞”(清洗攻击流量的隔离机制),轻则中断半小时,重则长达24小时…...
leetcode-代码随想录-哈希表-有效的字母异位词
题目 题目链接:242. 有效的字母异位词 - 力扣(LeetCode) 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的 字母异位词。 输入: s "anagram", t "nagaram" 输出: true输入: s "rat",…...
kotlin中主构造函数是什么
一 Kotlin 中的主构造函数 主构造函数(Primary Constructor)是 Kotlin 类声明的一部分,用于在 创建对象时初始化类的属性。它不像 Java 那样是一个函数体,而是紧跟在类名后面。 主构造函数的基本定义 class Person(val name: S…...
Julia语言的测试覆盖率
Julia语言的测试覆盖率探讨 引言 在现代软件开发中,测试是确保软件质量的重要环节。随着软件的复杂度不断增加,测试覆盖率作为衡量测试质量的一个重要指标,受到了越来越多开发者的关注。Julia语言作为一种高性能的动态编程语言,…...
Apache httpclient okhttp(2)
学习链接 Apache httpclient & okhttp(1) Apache httpclient & okhttp(2) okhttp github okhttp官方使用文档 okhttp官方示例代码 OkHttp使用介绍 OkHttp使用进阶 译自OkHttp Github官方教程 SpringBoot 整合okHttp…...
BUUCTF-web刷题篇(10)
19.EasyMD5 md5相关内容总结: ①string md5(&str,raw) $str:需要计算的字符串; raw:指定十六进制或二进制输出格式。计算成功,返回md5值,计算失败,返回false。 raw参数为true:16个字符的二进制格式&…...
CCF GESP C++编程 五级认证真题 2025年3月
C 五级 2025 年 03 月 题号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 答案 A A B B D C A D A B C A A D B 1 单选题 第 1 题 链表不具备的特点是( )。 A. 可随机访问任何一个元素 B. 插入、删除操作不需要移动元素 C. 无需事先估计存储空间大小 D. 所需存储空间与存储元素个数成…...
【AI学习】MCP的简单快速理解
最近,AI界最火热的恐怕就是MCP了。作为一个新的知识点,学习的开始,先摘录一些信息,从发展历程、通俗介绍到具体案例,这样可以快速理解MCP。 MCP发展历程 来自i陆三金 Anthropic 开发者关系负责人 Alex Albert&#…...
文档处理利器Docling,基于LangChain打造RAG应用
大家好,人工智能应用持续发展,对文档信息的有效处理、理解与检索提出了更高要求。大语言模型虽已在诸多领域发挥重要作用,但在文档处理方面仍有提升空间。 本文将详细阐述如何整合Docling 和 LangChain,创建检索增强生成…...
深度学习图像分类数据集—枣子水果成熟度分类
该数据集为图像分类数据集,适用于ResNet、VGG等卷积神经网络,SENet、CBAM等注意力机制相关算法,Vision Transformer等Transformer相关算法。 数据集信息介绍:3种枣子水果成熟度数据:g,r,y&#…...
第五讲(上) | string类的使用
string类的使用 一、string和C风格字符串的对比二、string类的本质三、string常用的API(注意只讲解最常用的接口)Member constants(成员常数)npos Member functionsIterators——迭代器Capacity——容量reserve和resizeElement ac…...
医药流通行业AI大模型冲击下的IT从业者转型路径分析
医药流通行业AI大模型冲击下的IT从业者转型路径分析 一、行业背景与技术变革趋势 在2025年的医药流通领域,AI技术正以指数级速度重塑行业格局。国家药监局数据显示,全国药品流通企业数量已从2018年的1.3万家缩减至2024年的8,900家,行业集中…...
【新能源汽车整车动力学模型深度解析:面向MATLAB/Simulink仿真测试工程师的硬核指南】
1. 前言 作为MATLAB/Simulink仿真测试工程师,掌握新能源汽车整车动力学模型的构建方法和实现技巧至关重要。本文将提供一份6000+字的深度技术解析,涵盖从基础理论到Simulink实现的完整流程。内容经过算法优化设计,包含12个核心方程、6大模块实现和3种验证方法,满足SEO流量…...
Android Fresco 框架动态图支持模块源码深度剖析(七)
上一期 Android Fresco 框架兼容模块源码深度剖析(六) 本人掘金号,欢迎点击关注:https://juejin.cn/user/4406498335701950 一、引言 在 Android 开发中,高效处理和展示动态图(如 GIF、WebP 动画等)是一个常见需求。…...
蓝桥杯专项复习——双指针
目录 双指针算法:双指针算法-CSDN博客 最长连续不重复子序列 P8783 [蓝桥杯 2022 省 B] 统计子矩阵 双指针优化思路:当存在重复枚举时,可以考虑是否能使用双指针进行优化 双指针算法:双指针算法-CSDN博客 最长连续不重复子序列…...
详解大模型四类漏洞
关键词:大模型,大模型安全,漏洞研究 1. 引入 promptfoo(参考1)是一款开源大语言模型(LLM)测试工具,能对 LLM 应用进行全面漏洞测试,它可检测包括安全风险、法律风险在内…...
【HC-05蓝牙模块】基础AT指令测试
一、视频课程 HC-05 蓝牙模块 第2讲 二、视频课件...
文件操作(c语言)
本关任务:给定程序的功能是:从键盘输入若干行文本(每行不超过 80 个字符),写到文件myfile4.txt中,用 -1(独立一行)作为字符串输入结束的标志。然后将文本的内容读出显示在屏幕上。文…...
Apache Camel指南-第四章:路由径构建之异常处理
摘要 Apache的骆驼提供几种不同的机制,让您在处理不同的粒度级别的例外:您可以通过处理一个路线中的异常doTry,doCatch以及doFinally; 或者您可以指定要采取什么行动每种类型的异常,并应用此规则的所有路由RouteBuilder使用onExc…...
赚钱模拟器--百宝库v0.1.0
#include<bits/stdc.h> #include<windows.h> using namespace std; int n; void welcome(); void zhuye(); int main(){welcome();zhuye();return 0; }void welcome(){cout<<"欢迎您使用更多资源-百宝库v0.1.0"<<endl;system("pause&q…...
SSL证书自动化管理(ACME协议)工作流程介绍
SSL证书自动化管理(ACME协议)是一种用于自动化管理SSL/TLS证书的协议,以下是其详细介绍: 一、ACME协议概述 ACME协议由互联网安全研究小组(ISRG)设计开发,旨在实现SSL证书获取流程的自动化。通…...
推理模型与普通大模型如何选择?
👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家📕系列专栏:Spring原理、JUC原理、Kafka原理、分布式技术原理、数据库技术、JVM原理、AI应用🔥如果感觉…...
人工智能与计算机技术融合下的高中教育数字化教学模式探索
一、引言 1.1 研究背景与意义 1.1.1 教育数字化转型的国家战略需求 在当今时代,数字化浪潮正席卷全球,深刻改变着人们的生产生活方式。教育领域作为培养未来人才的重要阵地,也不可避免地受到数字化的影响。教育数字化转型已成为世界各国的…...
P2762 太空飞行计划问题 (网络流、最大权闭合子图问题)
P2762 太空飞行计划问题 思路: 今日网络流 这个题思路其实很简单,先说结论:源点连所有实验,容量为收益;实验连接对应仪器,容量为无穷;所有仪器连汇点,容量为费用(注意是…...
对用户登录设计测试用例
一、功能测试 1、正确用户名和密码 输入正确的用户名和密码,点击提交,验证是否成功登录。 2、错误用户名或密码 输入错误的用户名或密码,验证登录失败,并提示“用户名或密码错误”。 3、登录…...
c语言修炼秘籍 - - 禁(进)忌(阶)秘(技)术(巧)【第四式】自定义类型详解(结构体、枚举、联合)
c语言修炼秘籍 - - 禁(进)忌(阶)秘(技)术(巧)【第四式】自定义类型详解(结构体、枚举、联合) 【心法】 【第零章】c语言概述 【第一章】分支与循环语句 【第二章】函数 【第三章】数组 【第四章】操作符 【第五章】指针 【第六章】结构体 【第七章】con…...
阿里巴巴langengine二次开发大模型平台
阿里巴巴LangEngine开源了!支撑亿级网关规模的高可用Java原生AI应用开发框架 - Leepy - 博客园 阿里国际AI应用搭建平台建设之路(上) - 框架篇 基于java二次开发 目前Spring ai、spring ai alibaba 都是java版本的二次基础能力 重要的是前端工作流 如何与 服务端的…...
获取KUKA机器人诊断文件KRCdiag的方法
有时候在进行售后问题时需要获取KUKA机器人的诊断文件KRCdiag,通过以下方法可以获取KUKA机器人的诊断文件KRCdiag: 1、将U盘插到控制柜内的任意一个USB接口; 2、依次点【主菜单】—【文件】—【存档】—【USB(控制柜)…...
聊聊Spring AI的MilvusVectorStore
序 本文主要研究一下Spring AI的MilvusVectorStore 示例 pom.xml <dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-vector-store-milvus</artifactId></dependency>配置 spring:ai:vectorstore:…...
前后端通信指南
HTTP 协议与 RESTful APIWebSocket 与实时通信一、前后端通信概述 前后端通信是现代 Web 开发的核心环节,前端(浏览器或移动端)需要向后端请求数据,并根据返回的数据渲染界面。常见的通信方式包括 HTTP 请求、RESTful API、WebSocket、GraphQL 等。 常见前后端通信方式 通…...
[特殊字符] 驱动开发硬核特训 · Day 2
主题:深入掌握 UART 与 SPI 驱动开发原理、架构与调试技术 本期围绕实际项目中应用最广泛的两类外设通信接口 —— UART(串口)与 SPI(串行外设接口),通过结构化知识点梳理,结合实际驱动开发流程…...
B树和B+树的区别(B Tree B+ Tree)
前言 B树和B树是数据库中常用的索引结构,它们的核心区别主要体现在数据存储方式、节点结构和适用场景上。 关键区别详解 数据存储方式: B树:所有节点均存储键值(key-data)对,数据可能分布在树的任意层级。…...
32--当网络接口变成“夜店门口“:802.1X协议深度解码(理论纯享版本)
当网络接口变成"夜店门口":802.1X协议深度解码 引言:网口的"保安队长"上岗记 如果把企业网络比作高端会所,那么802.1X协议就是门口那个拿着金属探测器的黑超保安。它会对着每个想进场的设备说:“请出示您的会…...
【LLM】使用MySQL MCP Server让大模型轻松操作本地数据库
随着MCP协议(Model Context Protocol)的出现,使得 LLM 应用与外部数据源和工具之间的无缝集成成为可能,本章就介绍如何通过MCP Server让LLM能够直接与本地的MySQL数据库进行交互,例如新增、修改、删除数据,…...
MOM成功实施分享(八)汽车活塞生产制造MOM建设方案(第一部分)
在制造业数字化转型的浪潮中,方案对活塞积极探索,通过实施一系列数字化举措,在生产管理、供应链协同、质量控制等多个方面取得显著成效,为行业提供了优秀范例。 1.转型背景与目标:活塞在数字化转型前面临诸多挑战&…...
程序化广告行业(59/89):广告验证与反作弊实战技巧
程序化广告行业(59/89):广告验证与反作弊实战技巧 大家好!在程序化广告领域,想要做好投放,除了了解基本的架构和原理,还得掌握一些关键的技能,比如广告验证和反作弊。今天就和大家一…...
市场趋势分析与交易策略调整
市场趋势分析与交易策略调整 在市场交易中,趋势的判断与策略的调整至关重要。不同市场环境下,交易者需要灵活运用技术分析和资金管理手段,以提升交易的稳定性。本文将探讨市场趋势的识别方法,以及如何在不同市场环境中调整交易策略…...
安卓离线畅玩的多款棋类单机游戏推荐
软件介绍 在手游盛行的当下,不少玩家在网游激战之余,渴望一份单机游戏带来的宁静与专注。今天要为大家介绍的,便是一款能满足此类需求的安卓软件 —— 棋类大师。 它巧妙地将象棋、围棋、五子棋三种经典棋类游戏集成于一身,且具…...
论文阅读Diffusion Autoencoders: Toward a Meaningful and Decodable Representation
原文框架图: 官方代码: https://github.com/phizaz/diffae/blob/master/interpolate.ipynb 主要想记录一下模型的推理过程 : %load_ext autoreload %autoreload 2 from templates import * device cuda:1 conf ffhq256_autoenc() # pri…...
医疗信息系统的主要痛点分析
医疗信息系统的主要痛点分析 1. 数据治理问题 数据标准不统一 各医院采用不同的数据格式和编码标准诊断术语、药品编码等缺乏统一规范检验检查结果的参考值范围不一致 数据质量参差不齐 数据录入不规范,存在大量错误和缺失历史数据清洗难度大数据更新不及时 数据安…...
Pycharm v2024.3.4 Windows Python开发工具
Pycharm v2024.3.4 Windows Python开发工具 文章目录 Pycharm v2024.3.4 Windows Python开发工具一、介绍二、效果三、下载 一、介绍 JetBrains PyCharm 是一款Python集成开发环境(IDE),被广泛用于Python开发 二、效果 三、下载 百度网盘: …...
YOLOv12 从预训练迈向自主训练,第一步数据准备
视频讲解: YOLOv12 从预训练迈向自主训练,第一步数据准备 前面复现过yolov12,使用pre-trained的模型进行过测试,今天来讲下如何训练自己的模型,第一步先准备数据和训练格式 https://gitcode.com/open-source-toolkit/…...
Java 线程池全面解析
Java 线程池全面解析 一、线程池种类及优缺点 1. 常见线程池类型(通过Executors创建) 线程池类型创建方式特点适用场景缺点FixedThreadPoolExecutors.newFixedThreadPool(n)固定线程数,无界队列负载较重的服务器可能堆积大量任务导致OOMCachedThreadPoolExecutors.newCach…...
第七章 Python基础进阶-异常、模块与包(其五)
目录 一.异常 二.异常的捕获方法 1.捕获常规异常 2.捕获指定异常 3.捕获多个异常 4.异常else 5.异常的finally 三.异常的传递 四.Python模块 1.import导入模块 2.from导入模块 3.from模块名 import* 4.as定义别名 5.自定义模块 (1)测试模块…...
vulkanscenegraph显示倾斜模型(5.6)-vsg::RenderGraph的创建
前言 上一章深入分析了vsg::CommandGraph的创建过程及其通过子场景遍历实现Vulkan命令录制的机制。本章将在该基础上,进一步探讨Vulkan命令录制中的核心封装——vsg::RenderGraph。作为渲染流程的关键组件,RenderGraph封装了vkCmdBeginRenderPass和vkCmd…...
DelayQueue vs ScheduledThreadPool:Java定时任务的双雄争霸
定时任务管理的两种武林绝学 想象你需要管理一个跨时区的视频会议系统: DelayQueue 像一位严格的计时员,把所有会议请求按时间排序,到点才放行ScheduledThreadPool 像一位智能秘书,能主动安排、取消和调整会议时间 它们都能处理…...
Qt添加资源文件
目录 1.创建一个新项目 1.1菜单栏 添加菜单项 1.2工具栏 1.3铆接部件 1.4中心部件 1.5最终界面 2.资源文件 2.1将图片文件拷贝到项目位置下 2.2添加新文件 2.3rec.qrc文件 2.4添加前缀,添加文件 2.5使用 1.创建一个新项目 利用界面文件完成一个有菜单…...
U-Net: Convolutional Networks for BiomedicalImage Segmentation
Abstract 人们普遍认为,深度网络的成功训练需要成千上万的标注训练样本。在本文中,我们提出了一种网络和训练策略,该策略强烈依赖于数据增强,以更有效地利用现有的标注样本。该架构包括一个用于捕获上下文的收缩路径和一个用于实…...
28--当路由器开始“宫斗“:设备控制面安全配置全解
当路由器开始"宫斗":设备控制面安全配置全解 引言:路由器的"大脑保卫战" 如果把网络世界比作一座繁忙的城市,那么路由器就是路口执勤的交通警察。而控制面(Control Plane)就是警察的大脑…...