fpga 8段4位数码管verilator模拟
8段4位数码管verilator模拟

seg.v
module seg(input wire clk,input wire rst_n,output wire[7:0] SEG,output wire[3:0] SEL
);reg[7:0] digit[0:15] = '{8'h3f, 8'h06, 8'h5b, 8'h4f, 8'h66, 8'h6d, 8'h7d,8'h07,8'h7f,8'h6f, 8'h77, 8'h7c, 8'h39, 8'h5e, 8'h79, 8'h71};reg[31:0] cnt = 32'h0000000000;always @(posedge clk or negedge rst_n) beginif (!rst_n)cnt <= 32'h00000000;elsecnt <= cnt + 1;
endreg[1:0] shift;assign shift = cnt[16:15];assign SEL = 4'b0001 << shift;
assign SEG = digit[4'(cnt[31:20]>>shift*4)];endmodule
转接
seg_adaptor.v
module seg_adaptor(input wire clk,input wire[7:0] SEG,input wire[3:0] SEL
);
import "DPI-C" function void print(byte seg, byte sel);
reg[3:0] state = 4'b0001 ;always @(posedge clk)if (state != SEL) beginprint(byte'(SEG),byte'(SEL));state <= SEL;endendmodule
tb
top.v
module top;
wire[7:0] seg;
wire[3:0] sel;
reg clk = 1'b0;
reg rst_n = 1'b0;initial begin#10 rst_n = 1'b1;forever #1 clk = ~clk;
endseg seg1(.clk(clk),.rst_n(rst_n),.SEG(seg),.SEL(sel));seg_adaptor adaptor1(.clk(clk),.SEG(seg),.SEL(sel));endmodule
print.h
#ifdef __cplusplus
extern "C"{
#endifvoid print(char seg, char sel);#ifdef __cplusplus
}
#endif
print.c
#define DIGIT_NUM 4
#include <stdio.h>
#include <stdbool.h>
#include <unistd.h>
#include "svdpi.h"
#include "print.h"static inline void prt(unsigned char data,int bit,char c) {if(data&(1<<bit)) putchar(c);else putchar(' ');
}static inline void printu(unsigned char data, int b1, int b2, int b3)
{prt(data,b1,'|') ;prt(data,b2,'_') ;prt(data,b3,'|') ;}void printd(unsigned char data){printf("\x1b[C"); //前进一格prt(data,0,'_');printf("\x1b[B\x1b[2D"); //下移一格后退两格printu(data,5,6,1);printf("\x1b[B\x1b[3D"); //下移一格后退三格printu(data,4,3,2);prt(data,7,'.');
}void print(char sg, char sel) {unsigned char seg = (unsigned char ) sg;static int init = 0;if (init == 0) {printf("\n\n\n");init = 1;printf("\x1b[?25l"); //隐藏光标}unsigned char c = sel;for(int i = 7; i >= 0; i--)if(sel&(1<<i)) {printf("\x1b[2A\x1b[%dG",(DIGIT_NUM-i-1)*4+1); //上移两行定位printd(seg);}fflush(stdout);
}
Makefile
.PHONY:cleanVERILATOR = verilatorOUTDIR=out
VERILATOR_FLAGS = -Wall -top top -Mdir $(OUTDIR) -cc -binary -build -j 2default: runrun: print.c top.v seg.v seg_adaptor.v$(VERILATOR) $(VERILATOR_FLAGS) $^./$(OUTDIR)/Vtoprc: #restore cursor visibility@echo -ne "\x1b[?25h"clean:-rm -rf $(OUTDIR)
make
ctrl c 退出后光标会隐藏
恢复光标显示
make rc
已上传github
git clone https://github.com/yses/fpgasim
相关文章:
fpga 8段4位数码管verilator模拟
8段4位数码管verilator模拟 seg.v module seg(input wire clk,input wire rst_n,output wire[7:0] SEG,output wire[3:0] SEL );reg[7:0] digit[0:15] {8h3f, 8h06, 8h5b, 8h4f, 8h66, 8h6d, 8h7d,8h07,8h7f,8h6f, 8h77, 8h7c, 8h39, 8h5e, 8h79, 8h71};reg[31:0] cnt 32…...
HttpURLConnection发送各种内容格式
通过java.net.HttpURLConnection类实现http post发送Content-Type为multipart/form-data的请求。 json处理使用com.fasterxml.jackson 图片压缩使用net.coobird.thumbnailator log使用org.slf4j 一些静态变量 private static final Charset charset StandardCharsets.UTF_8;…...
摇杆控制人物移动
摇杆控制人物移动 一、UI搭建二、3d模型搭建三、脚本JoyStickBar.csPlayerController.cs 工程在我资源里名字叫Joystickbar.unitypackage [连接](https://download.csdn.net/download/qq_42194657/12043019?spm1001.2014.3001.5503) 一、UI搭建 JoyStickBar是图片背景 JoySt…...
Jenkins自动化部署之后端
准备工作参考本人另外几篇Jenkins相关的文章 新建任务 添加参数配置 字符串参数:分支名称 多选框:项目名称(Extended Choice Parameter插件必备,插件安装参考我另外的文章) 这个分割规则自定义。只要根据Jenkins…...
Could not resolve com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.28.
1、首先进入阿里云maven仓库,在搜索栏输入无法下载的依赖名称,查询现有版本号,可以看到这里有2.9.34。 2、在build.gradle(Project)的buildscript闭包下替换为阿里云maven仓库: maven { url https://www.jitpack.io } maven { u…...
RK3588平台开发系列讲解(AI 篇)RKNN rknn_query函数详细说明
文章目录 一、查询 SDK 版本二、查询输入输出 tensor 个数三、查询输入 tensor 属性(用于通用 API 接口)四、查询输出 tensor 属性(用于通用 API 接口)五、查询模型推理的逐层耗时六、查询模型推理的总耗时七、查询模型的内存占用情况八、查询模型里用户自定义字符串九、查询原…...
15个主流设计灵感网站,激发你的创作灵感!
即时设计 即时设计是一种强大的云设计工具,已成为许多设计师、产品经理和开发人员的首选工具之一。即时设计用户可以使用内置的工具和功能快速创建和编辑设计,或与其他用户共享和合作。此外,即时设计还有一个丰富的资源社区,为用…...
Matlab:解非线性方程组
1、基于问题求解非线性方程组 例: xoptimvar(x,2); %将x定义为一个二元素优化变量 eq1exp(-exp(-(x(1)x(2))))x(2)*(1x(1)^2); %创建第一个方程作为优化等式表达式 eq2x(1)*cos(x(2))x(2)*sin(x(1))1/2; %创建第二个方程作为优化等式表达式 probe…...
面向 AI,重塑云基础设施、存储、芯片、Serverless……2023亚马逊云科技re:Invent中国行
一年一度亚马逊云科技重要的技术盛会 re:Invent 刚落下帷幕,2023 亚马逊云科技 re:Invent 中国行就将其中重要的信息与内容带给了中国市场和用户。作为全球的云计算巨头,今年亚马逊云科技可以说全面加码 AI,例如发布完整的端到端生成式 AI 技…...
【JDK新特性】JDK和Springboot各版本新特性介绍
目录 参考资料 以下是一些较新版本的JDK的主要新特性介绍: JDK 8: Lambda 表达式:引入了函数式编程的概念,使得代码更简洁、可读性更强。Stream API:提供了一种高效处理集合数据的方式,支持并行处理。默认…...
tomcat剖析:开篇
一、简介 本专栏为解析tomcat的专栏,用于一步步的从构建到执行,再到剖析tomcat的内部构造,然后再加上自己的理解,从0到1去认识我们日常开发中不可或缺的web容器,希望对之后的软件设计能够有所启示。 二、步骤 2.1构…...
华为路由器:DHCP配置
在大型企业网络中,会有大量的主机获取IP地址等网络参数。如果采用手工配置,则工作量大不好管理,若用户擅自更改网络参数,则容易导致IP冲突。 因此使用动态主机配置协议(DHCP)可以减少管理员的工作量&#x…...
(企业 / 公司项目)微服务OpenFeign怎么实现服务间调用?(含面试题)
Feign: 远程调用组件使用步骤,理解上面的图 后台系统中, 微服务和微服务之间的调用可以通过Feign组件来完成. Feign组件集成了Ribbon负载均衡策略(默认开启的, 使用轮询机制),Hystrix熔断器 (默认关闭的, 需要通过配置文件进行设置开启) 被调用的微服务…...
数据结构:图文详解 树与二叉树(树与二叉树的概念和性质,存储,遍历)
目录 一.树的概念 二.树中重要的概念 三.二叉树的概念 满二叉树 完全二叉树 四.二叉树的性质 五.二叉树的存储 六.二叉树的遍历 前序遍历 中序遍历 后序遍历 一.树的概念 树是一种非线性数据结构,它由节点和边组成。树的每个节点可以有零个或多个子节点…...
DM工作笔记-在windows下对DM7进行库还原恢复
提供了这些备份数据 在windows平台上,将这些备份数据还原到新库中。 首先实例得先停掉: 使用的软件console.exe: 重要步骤:①获取备份;②还原;③恢复 记住DMAP方式这个不要勾选,然后再获取备份…...
STM32软硬件CRC测速对比
硬件CRC配置 以及软硬件CRC速度对比 使用CUBEMX配置默认使用的是CRC32,从库中可以看出这一点 HAL库提供了以下两个计算函数 HAL_CRC_Accumulate(CRC_HandleTypeDef *hcrc, uint32_t pBuffer[], uint32_t BufferLength); 这个函数用于在已有的CRC校验结果的基础上累积…...
第九部分 图论
目录 例 相关概念 握手定理 例1 图的度数列 例 无向图的连通性 无向图的连通度 例2 例3 有向图D如图所示,求 A, A2, A3, A4,并回答诸问题: 中间有几章这里没有写,感兴趣可以自己去学,组合数学跟高中差不多,…...
如何用java实现对java虚拟机的性能监控?
要使用Java实现对Java虚拟机(JVM)的性能监控,可以使用Java Management Extensions(JMX)来获取和监控JVM的各种指标。以下是一个简单的示例代码,演示如何使用JMX监控JVM的内存使用情况: import …...
电路设计(7)——窗口比较器的multism仿真
1.功能设计 构建一个窗口比较器的电路,在输入电压大于3.5v,小于0.8v时,蜂鸣器报警,输入电压在0.8v到3.5v之间时,不报警。 整体电路如下: 2.设计思路 在输入端,采取电阻分压的方式,输…...
前端已死?探讨人工智能与低代码对前端的影响
文章目录 每日一句正能量前言前端行业究竟是好是坏?数字化转型的当下前端工程师该何去何从? 想要入行前端先认清这三个事实 后记 每日一句正能量 人的结构就是相互支撑,众人的事业需要每个人的参与。 前言 随着人工智能和低代码的崛起&#…...
SGP30传感器数据不准?可能是你的I2C时序和初始化搞错了(避坑指南)
SGP30传感器数据异常排查指南:从硬件设计到软件调试的完整解决方案 1. 硬件设计中的常见陷阱与优化方案 SGP30作为一款高精度环境传感器,其硬件设计细节直接影响数据可靠性。许多开发者遇到的首要问题往往源于电路设计阶段被忽视的关键参数。 电源稳定性…...
Pixel Fashion Atelier实战教程:如何导出带元数据的PNG并适配Unity像素精灵管线
Pixel Fashion Atelier实战教程:如何导出带元数据的PNG并适配Unity像素精灵管线 1. 教程概述 Pixel Fashion Atelier作为一款专为像素艺术设计的AI生成工具,其输出结果需要经过特殊处理才能完美适配Unity的像素精灵管线。本教程将手把手教你如何导出带…...
如何突破数据标注瓶颈?Label Studio全攻略:从多模态标注到AI协作
如何突破数据标注瓶颈?Label Studio全攻略:从多模态标注到AI协作 【免费下载链接】label-studio Label Studio is a multi-type data labeling and annotation tool with standardized output format 项目地址: https://gitcode.com/GitHub_Trending/l…...
加油卡小程序玩法全解析:刚需场景破局,从充值裂变到合规运营全攻略
国内私家车与新能源车主群体持续扩容,加油、充电作为高频刚性消费场景,自带稳定流量与强付费意愿,加油卡小程序凭借轻量化、易传播、直达用户的优势,成为加油站、第三方车主服务平台、车企布局私域流量的核心载体。不同于潮玩等娱…...
vLLM-v0.17.1惊艳效果:束搜索+并行采样在长文本生成中的稳定性展示
vLLM-v0.17.1惊艳效果:束搜索并行采样在长文本生成中的稳定性展示 1. vLLM框架核心能力概览 vLLM是一个专为大型语言模型(LLM)设计的高性能推理和服务库,其最新版本v0.17.1在长文本生成稳定性方面取得了显著突破。这个开源项目最初由加州大学伯克利分校…...
LyricsX:macOS平台的多源歌词同步与显示技术方案
LyricsX:macOS平台的多源歌词同步与显示技术方案 【免费下载链接】LyricsX 🎶 Ultimate lyrics app for macOS. 项目地址: https://gitcode.com/gh_mirrors/ly/LyricsX LyricsX是一款专为macOS设计的开源歌词应用,通过集成多个歌词源和…...
Chainlit前端定制化|通义千问1.5-1.8B-GPTQ-Int4私有化部署与UI二次开发教程
Chainlit前端定制化|通义千问1.5-1.8B-GPTQ-Int4私有化部署与UI二次开发教程 你是不是已经体验过各种在线大模型,但总感觉有些限制?比如数据隐私的担忧、网络延迟的困扰,或者想打造一个完全属于自己的、界面更符合业务需求的AI助…...
C1——优化3Dtiles透明度设置以实现管线可视化
1. 为什么需要调整3Dtiles透明度? 在地理信息系统(GIS)和三维可视化项目中,我们经常会遇到多层数据叠加显示的需求。比如在城市地下管线可视化场景中,地表建筑模型(3Dtiles)和地下管线网络需要同…...
南开计算机复试面试:一份能让老师眼前一亮的简历和自我介绍该怎么写?(附避坑指南)
南开大学计算机复试:如何打造高通过率的技术简历与自我介绍 站在南开大学计算机楼前,看着玻璃幕墙反射的阳光,我突然想起去年此时自己手忙脚乱准备复试的场景。作为过来人,我深知一份精心设计的简历和流畅自然的自我介绍ÿ…...
Guohua Diffusion 数据库集成方案:MySQL管理生成任务与作品元数据
Guohua Diffusion 数据库集成方案:MySQL管理生成任务与作品元数据 如果你用过Guohua Diffusion这类图像生成工具,可能会遇到一个头疼的问题:生成的图片越来越多,管理起来越来越乱。今天想找上周生成的那张“赛博朋克风格的城市夜…...
