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.设计思路 在输入端,采取电阻分压的方式,输…...

前端已死?探讨人工智能与低代码对前端的影响
文章目录 每日一句正能量前言前端行业究竟是好是坏?数字化转型的当下前端工程师该何去何从? 想要入行前端先认清这三个事实 后记 每日一句正能量 人的结构就是相互支撑,众人的事业需要每个人的参与。 前言 随着人工智能和低代码的崛起&#…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...

接口自动化测试:HttpRunner基础
相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...

Ubuntu系统复制(U盘-电脑硬盘)
所需环境 电脑自带硬盘:1块 (1T) U盘1:Ubuntu系统引导盘(用于“U盘2”复制到“电脑自带硬盘”) U盘2:Ubuntu系统盘(1T,用于被复制) !!!建议“电脑…...