verilog 通过DPI-C调用C 流水灯模拟

verilog 通过DPI-C调用C简单示例, verillator模拟

ledloop.v

module ledloop(input wire clk,output wire[3:0] LED
);reg[31:0] cnt = 32'h00000000;always @(posedge clk)cnt <= cnt + 1;assign LED = 4'b0001 << cnt[21:20];
endmodule

电脑模拟较慢,2M计数位移一次,可以自行通过计数位调整。

转接
led_adaptor.v

module led_adaptor(input wire clk,input wire[3:0] LED
);
import "DPI-C"  function void  print(int a); 
reg[3:0] state ;always @(posedge clk)if (state != LED) beginprint(int'(LED));state <= LED;endendmodule

tb
top.v

module top;
wire[3:0] led;
reg clk = 1'b0;initial beginforever #1  clk = ~clk;
endledloop  loop1(.clk(clk),.LED(led));led_adaptor  adaptor1(.clk(clk),.LED(led));endmodule

print.c

#define BITWIDTH 4
#include <stdio.h>
#include <unistd.h>
#include "svdpi.h"
extern "C"
void print(int a) {unsigned  b = (unsigned)a;printf("\r");  //移至行首printf("\033[K");  //清除光标后字符for (int i = 0; i < BITWIDTH; i++){if (b&1)printf("* ");elseprintf("  ");b = b >> 1;}   fflush(stdout);
}          

Makefile

.PHONY:cleanVERILATOR = verilatorOUTDIR=out
VERILATOR_FLAGS =  -Wall -top top -Mdir $(OUTDIR) -cc -binary -build -j 2default: runrun: print.c top.v  ledloop.v led_adaptor.v$(VERILATOR) $(VERILATOR_FLAGS) $^./$(OUTDIR)/Vtopclean:-rm -rf $(OUTDIR)

先安装verilator
直接

make 

github上传了下直接
git clone https://github.com/yses/fpgasim

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

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

相关文章

如何解决服务器CA证书过期的问题

一、问题的提出 最近在学习VPS&#xff0c;在Linux系统里给服务器安装某项服务时&#xff0c;在服务的log里看到下面的错误信息&#xff1a; failed to verify certificate: x509: certificate has expired or is not yet valid: current time 2023-12-25T04:42:38-05:00 is a…

java球队信息管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web球队信息管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5…

深度学习之RNN

1.循环神经网络 在时间t的时候&#xff0c;对于单个神经元来讲它的输出y(t)如下 wx是对于输入x的权重&#xff0c;wy是对于上一时刻输出的权重 所以循环神经网络有两个权重。 如果有很多这样的神经元并排在一起 则在t时刻的输出y为 这时输入输出都是向量 2.记忆单元 由于循…

java系列-CountDownLatch

CountDownLatch 不是一种锁&#xff0c;而是一种同步工具类&#xff0c;用于协调多个线程之间的操作。它并不是像 ReentrantLock 或 synchronized 关键字那样实现了锁定机制&#xff0c;而是通过一个计数器来实现线程的等待和通知。 具体来说&#xff0c;CountDownLatch 维护了…

车队试验的远程实时显示方案

风丘科技推出的数据远程实时显示方案更好地满足了客户对于试验车队远程实时监控的需求&#xff0c;并真正实现了试验车队的远程管理。随着新的数据记录仪软件IPEmotion RT和相应的跨平台显示解决方案的引入&#xff0c;让我们的客户端不仅可在线访问记录器系统状态&#xff0c;…

LaTeX 不同章的图片放在不同的文件夹

需求&#xff1a;在写长文档的时候&#xff0c;比如学位论文&#xff0c;每一章都有好几张图片&#xff0c;整个文档一共几十张甚至上百张图片&#xff0c;如果不分开放&#xff0c;想修改某一张图片的时候&#xff0c;找起来比较困难。所以&#xff0c;想把每一章的图片单独放…

git unable to create temporary file: No space left on device(git报错)

1.问题 1.1 vscode中npm run serve跑项目的时候&#xff0c;进度达到95%的时候一直卡着无进度&#xff1b; 1.2 git命令提交代码报错&#xff1b; 2.具体解决 这个错误通常表示你的磁盘空间已经满了&#xff0c;导致 Git 无法在临时目录中创建文件。2.1 清理磁盘空间&#xf…

LeetCode75| 区间集合

目录 435 无重叠区间 452 用最少的箭引爆气球 435 无重叠区间 class Solution { public:static bool cmp(vector<int>&a,vector<int>&b){return a[0] < b[0];}int eraseOverlapIntervals(vector<vector<int>>& intervals) {int res …

低代码平台在金融银行中的应用场景

随着数字化转型的推进&#xff0c;商业银行越来越重视技术在业务发展中的作用。在这个背景下&#xff0c;白码低代码平台作为一种新型的开发方式&#xff0c;正逐渐受到广大商业银行的关注和应用。白码低代码平台能够快速构建各类应用程序&#xff0c;提高开发效率&#xff0c;…

WebGoat 指定端口号

文章目录 新版本的 WebGoat旧版本 WebGoat 新版本的 WebGoat 使用 WEBGOAT_PORT 指定 WebGoat 的端口号 使用 WEBWOLF_PORT 指定 WebWolf 的端口号 java -DWEBGOAT_PORT8081 -jar webgoat-2023.8.jar java -DWEBGOAT_PORT8081 -DWEBWOLF_PORT9091 -jar webgoat-2023.8.jar W…

跨境电商引流真的很难吗?了解一下这些技巧!

随着全球电商市场的不断扩大&#xff0c;越来越多的企业开始涉足跨境电商领域&#xff0c;然而&#xff0c;与国内电商相比&#xff0c;跨境电商面临着诸多挑战&#xff0c;其中最大的难题之一就是如何有效地吸引潜在客户。 很多卖家觉得跨境电商引流非常困难&#xff0c;但实…

解析数据时代----驱动变革与重塑商业的力量

随着科技的飞速发展&#xff0c;我们正处在一个信息爆炸的时代。数据&#xff0c;作为这个时代的核心要素&#xff0c;已经渗透到各个领域&#xff0c;深刻影响着我们的生活、工作和商业模式。本文将深入解析数据时代的特点、影响以及如何应对数据带来的挑战&#xff0c;以适应…

springBoot整合redis做缓存

一、Redis介绍 Redis是当前比较热门的NOSQL系统之一&#xff0c;它是一个开源的使用ANSI c语言编写的key-value存储系统&#xff08;区别于MySQL的二维表格的形式存储。&#xff09;。和Memcache类似&#xff0c;但很大程度补偿了Memcache的不足。和Memcache一样&#xff0c;R…

BAT log-yyyy-mm-dd.log

日志文件 文件名 日期格式化 https://download.csdn.net/download/spencer_tseng/88673832 https://download.csdn.net/download/spencer_tseng/88673716

探究Android DreamService的梦幻世界

探究Android DreamService的梦幻世界 引言 DreamService的概述 在Android开发中&#xff0c;DreamService是一种特殊类型的服务&#xff0c;它可以用于创建梦幻世界的屏保应用。梦幻世界是一种用户界面显示模式&#xff0c;当设备进入空闲状态时&#xff0c;系统会自动启动D…

main函数的参数ac和av

概要&#xff1a; main函数有两个参数&#xff0c;ac和av ac表示参数的个数&#xff0c;程序名包括在内。也就是说程序无参数运行时&#xff0c;ac的值为1 av是一个字符串数组&#xff0c;这个数组中的每个元素表示一个参数&#xff0c;程序名包括在内。也就是说&#xff0c…

linux如何清理磁盘,使得数据难以恢复

sda 是硬盘&#xff0c;sda1 和 sda2 是硬盘的两个分区。centos-root 是一个逻辑卷&#xff0c;挂载在根目录 /。 /dev/sda 是硬盘&#xff0c;/dev/sda1 和 /dev/sda2 是硬盘的两个分区。 [rootnode2 ~]# dd if/dev/urandom of/dev/sda bs4M这个命令将从 /dev/urandom 读取随…

【JavaScript】垃圾回收与内存泄漏

✨ 专栏介绍 在现代Web开发中&#xff0c;JavaScript已经成为了不可或缺的一部分。它不仅可以为网页增加交互性和动态性&#xff0c;还可以在后端开发中使用Node.js构建高效的服务器端应用程序。作为一种灵活且易学的脚本语言&#xff0c;JavaScript具有广泛的应用场景&#x…

JAVA语言—AOP基础

1、AOP概述 AOP&#xff1a;AOP&#xff08;Aspect Oriented Programming&#xff09;&#xff0c;即面向切面编程&#xff0c;可以说是OOP&#xff08;Object Oriented Programming&#xff0c;面向对象编程&#xff09;的补充和完善。 场景&#xff1a;案例部分功能运行较慢&…

「微服务」微服务架构中的数据一致性

在微服务中&#xff0c;一个逻辑上原子操作可以经常跨越多个微服务。即使是单片系统也可能使用多个数据库或消息传递解决方案。使用多个独立的数据存储解决方案&#xff0c;如果其中一个分布式流程参与者出现故障&#xff0c;我们就会面临数据不一致的风险 - 例如在未下订单的情…