【数字电路】MacBook使用iverilog进行数字电路仿真

安装流程

在终端中用brew包管理工具进行安装仿真工具:

编译verilog代码:
brew install icarus-verilog

编译verilog代码:
brew install verilator

MacOS系统显示UNIX GUI
brew install xquartz

可视化仿真波形图:
brew install gtkwave

安装过程中可能出现如下报错:

Error: icarus-verilog: unknown or unsupported macOS version: :dunno

解决方案:升级brew工具

brew update-reset

代码编写

编写verilog文件test.v

module test (
    input clk,
    output dout
);
    assign dout = ~clk;
endmodule

这个verilog代码表达的是输出信号dout是输入信号clk取反的值。

编写testbench文件test_tb.v

/*
    incentive document
*/
`timescale 1ns / 1ns
module testbench();
    reg clk;
    /* define the wire below */
    wire dout;

    parameter CYCLE    = 2;
    parameter END_TIME = 200;
    /* init the module below */

    test mod(
        .clk    (clk),
        .dout   (dout)
    );

/***************************************************/
    initial begin            
        $dumpfile("wave.vcd");      //生成的vcd文件名称
        $dumpvars(0, testbench);    //tb模块名称
    end 
/***************************************************/
    /* init the state */
    initial begin
        clk = 0;
    end
/***************************************************/
    /* generate clock */
    always begin
        #(CYCLE / 2) clk = ~clk;
    end
/***************************************************/
    /* stop the simulation */
    initial begin
        #END_TIME;
        $stop;
    end

endmodule

注意,一定要有如下模块才能生成波形文件:

    initial begin            
        $dumpfile("wave.vcd");      //生成的vcd文件名称
        $dumpvars(0, testbench);    //tb模块名称
    end 

编译仿真

verilog文件编译:

iverilog -o wave test.v test_tb.v

生成vcd文件:

vvp -n wave lx2

在这里插入图片描述

用gtkwave工具打开vcd波形:

gtkwave wave.vcd
或
open wave.vcd

但是我的MacOS系统版本高于14,所以gtkwave工具不兼容,因此可以使用vscode的wavetrace插件可视化波形图。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
从波形图可知,dout=~clk这个逻辑满足,仿真完成。

另外,编译过程可以写进shell脚本(complier.sh)一步完成:

echo "开始编译"
iverilog -o wave ./test.v ./test_tb.v
echo "编译完成"

echo "生成波形文件"
vvp -n wave lxt2 
cp wave.vcd wave.lxt

echo "打开波形文件"
open wave.vcd

执行脚本:

bash ./compiler.sh

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

柯桥西班牙语里最“好用”的脏话:一些关于cojones的表达

Creo que una de las palabras con ms contextos donde se puede utilizar y que adems pronto es conocida por los estudiantes de espaol es esta que est en el ttulo. 相信标题中的这个单词“cojones”,使用时总是包含很多含义,同时也是西语学习者最…

郝斌C语言自学教程笔记

赫斌C语言——笔记目录 c语言编程预备知识流程控制函数变量指针结构体位运算符 前段时间康哥看我C语言基础不牢,推荐我学习郝斌老师的C语言课程,花2周看完之后发现确实是目前所看的C语言课程中最好的,不仅非常适合入门,而且对即使学了几年C语…

ARM开发

ARM课程介绍 课程特点 ARM开发 --> Linux移植 --> 驱动开发 前后联系:ARM和系统移植为驱动开发学习做准备工作 所需知识:C语言基础及STM32需要的硬件知识 课程要求 目标:学习程序运行原理、硬件的控制原理 会看原理图、芯片手册、学习…

MVVM前端设计模式的发展与应用

在MVC模式中,随着代码量越来越大,Controller主要用来处理各种逻辑和数据转化的Controller首当其冲,变得非常庞大,MVC的简写变成了Massive-View-Controller(意为沉重的Controller) 我曾经接手老项目&#x…

ChatGPT对话为什么不用WebSocket而使用EventSource?

文章目录 1. 引言2. WebSocket和EventSource简介2.1 WebSocket2.2 EventSource 3. ChatGPT对话系统的特点4. EventSource的优势4.1 简单易用4.2 容错性强4.3 兼容性良好 5. 为何选择EventSource而非WebSocket?5.1 单向通信模式5.2 长轮询模式5.3 简化部署和维护 6. …

java导出excel通用工具(POI,类注解形式)

通过给类定义注解(设置名称,设置kv转换值),然后利用设置的名称和传入的数据进行导出。 只需要在项目添加两个工具类就可以实现excel导出功能。 1、单sheet 步骤:1、根据业务需求定义导出的类,并设置表头名称。 …

gitee创建一个新仓库和提交代码到码云

gitee创建一个新的项目并提交到码云 新建一个仓库 填写创建基本信息 以这个新创建的仓库保存项目所有的代码 在IDEA中克隆这个项目 从版本控制中新建一个git项目 从码云成功克隆项目 创建微服务模块 创建第商品模块 以以上同样的步骤完成下面几个模块的创建 聚合总…

Tita集成无代码API:电商客服与营销系统的升级

API的力量:优化电商与客服系统的无代码集成解决方案 在数字化转型的时代,电商与客服系统的高效运作对于企业的成功至关重要。无代码API平台Tita为此提供了一站式解决方案,使企业在无需深入的代码开发工作的前提下,便能实现各种系…

云原生向量计算引擎 PieCloudVector:为大模型提供独特记忆

拓数派大模型数据计算系统(PieDataComputingSystem,缩写:πDataCS)在10月24日程序员节「大模型数据计算系统」2023拓数派年度技术论坛正式发布。πDataCS 以云原生技术重构数据存储和计算,「一份存储,多引擎…

基于Modis的遥感数据的地表温度的获取解决方案----以京津唐为例

1.背景与技术路线 地表温度(LST)是区域和全球尺度地表物理过程中的一个关键因子,也是研究地表和大气之间物质交换和能量交换的重要参数。许多应用如干旱、高温、林火、地质、水文、植被监测,全球环流和区域气候模型等都需要获得 LST。本方案以北京为例采用星载传感器的红外通道…

亚马逊鲲鹏系统可快速创建大量的买家账户

在数字时代的浪潮中,人们总是在寻找更便捷、高效的方式来完成各种任务,而亚马逊鲲鹏系统的出现,无疑为那些渴望拥有大批量买家号的人提供了一个全新的可能性。在这个系统中,注册买家号变得轻而易举,只需准备好一些必要…

软件库论坛社区后台系统源码工具箱积分商城会员体系和在线商城于一体

HBuilderX前端软件社区thinkphp后端源码 搭建好后台 在前端找到 util 这个文件 把两个js文件上面的填上自己的域名 电脑需要下载:HBuilderX 下载后 登录账号 没有账号就注册账号 然后上传文件 在选择你上传的文件即可 打包选择 “发行” 可以打包app h5等等 演…

互联网加竞赛 python 爬虫与协同过滤的新闻推荐系统

1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 python 爬虫与协同过滤的新闻推荐系统 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分工作量:3分创新点:4分 该项目较为新颖&…

Android Studio Git Invocation failed Unexpected end of file from server

Invocation failed Unexpected end of file from server 解决办法,勾选以下内容

【构建工具】vite2没捂热,vite5又来了,性能大幅提升!

vite2还没焐热,vite5又来了!!! 就在一周前vite5重磅发布了!性能大幅提升! 请看下面:下面是翻译过来的,原文:Vite 5.0 发布! |维特 (vitejs.dev) Vite 4 大约在一年前发布…

swagger的ApiModelProperty设置字段的顺序

需求 让前端可以直接通过swagger就能知道各个字段是什么意思 如何配置 比如,我们设置了ApiModelProperty ApiModelProperty("用户主键")private Long userId;在swagger页面能直接看到注释 但是这个顺序是按照字母排序的,明显不符合我们的要…

三层交换,DHCP的详解与VRRP

目录 一、三层交换 1、三层交换机的作用: 2.vlan的虚拟接口vlanif(ifinterface接口) 3.三层交换机实验 4.拓展实验​编辑 二、DHCP 1.自动获取ip地址: 2.DHCP的好处: 3.分配方式: 4.举例&#xff…

[每周一更]-(第77期):反向代理的优势

反向代理 比如通过香港服务器去代理一些国内访问不到的服务器,APP中有些应用就将请求通过香港服务器转发到目标服务器中。 应该是域名访问,国内服务器需要备案,然后放到香港服务器做个转发代理。 代理服务器,客户机在发送请求时&…

【Android】使用 Glide 给 ImageView 加载图像的简单案例

前言 Android Glide是一个用于在Android应用中加载和显示图片的流行开源库。它提供了简单易用的API,可以帮助开发者高效地加载远程图片、本地图片以及GIF动画,并提供了缓存、内存管理等功能,使得图片加载在移动应用中更加流畅和高效。Glide还…

Axure的使用

1.Axure是什么??? Axure是一款功能强大的原型设计工具,它可以让用户快速地创建交互式原型,并针对原型进行测试和改进。Axure的主要特点包括可定制的界面元素库、交互动画效果、条件逻辑、团队协作等功能,适…