linux 下 verilog 简明开发环境附简单实例


author: hjjdebug
date: 2024年 10月 12日 星期六 10:34:13 CST
descripton: linux 下 verilog 简明开发环境附简单实例

甲: 安装软件

1. sudo apt install iverilog

该包verilog 源代码的编译器iverilog,其输出是可执行的仿真文件格式vvp格式
它可以检查源代码中的语法错误
该包还包含 verilog的命令行仿真器vvp, 它能把.vvp文件输出成图形格式.vcd
你可以查询man 手册得到它的基本用法及说明

2. sudo apt install gtkware

.vcd 文件的可视化工具

乙: 开发举例.

在linux下, 用verilog 设计一个计数器,并给出仿真图.

1. 计数器源代码

module basic(input sys_clk,input reset,output reg[3:0] counter
);//main code
//计数器
always@(posedge sys_clk or negedge reset)
beginif(!reset)counter <= 4'd0;elsecounter <= counter + 4'd1;endendmodule

2. test bench 测试代码

在这//时间精度/显示精度
`timescale 1ns/1ns
module tb_basic();//regeister and wire
reg sys_clk;
reg reset;
wire [3:0] counter;//initial, 输入信号激励及仿真命令
initial
begin$dumpfile("basic.vcd");$dumpvars(0,u_basic);sys_clk = 1'b1;reset = 1'b0;#100;reset = 1'b1;#1000;
//	$stop;$finish;
end//时钟激励, 25M 时钟
always #20 sys_clk=~sys_clk;basic u_basic(.sys_clk(sys_clk),.reset(reset),.counter(counter)
);
endmodule
里插入代码片

3. verilog 仿真中常用的4条命令


  1. $dumpfile(“test.vcd”);
    指示波形数据的保存文件,
    如果不指定, 默认文件名称是dump.vcd

  2. $dumpvars(0,test);
    指定需要记录到VCD文件中的信号
    第一个参数是保存该模块下几层模块数据【0表示只保存当前层,不保存子模块信号】,
    第二个参数是实例化的模块名

仿真控制命令.
3. $stop;
暂停仿真
4. $finish;
退出仿真程序

4. Makefile

我喜欢一种简单的命令行方式, 动动手指就能达到心中所想.
所以我将一些命令的使用汇集到一个Makefile中.
这样我才能把注意力放到编写代码上而不是消耗在环境中.
Makefile 内容如下:

SRC = basic.v tb_basic.v
TARGET = basic.out
# 在tb_basic.v 中指定了输出文件为basic.vcd
VCDFILE = basic.vcd
#############################################
#简化目标
all: $(TARGET)#生成target 文件,排除源码书写错误等
$(TARGET): $(SRC)iverilog -o $@ $^# 生成vcd 文件, 供gtkwave 使用
$(VCDFILE) : $(TARGET)vvp $(TARGET)#简化目标
build: $(VCDFILE)#简化目标,用run 目标来查看波形
run: $(VCDFILE)gtkwave $(VCDFILE)clean:rm $(TARGET) $(VCDFILE)

这样我在vim中(或emacs中) 直接敲入make 就能修改错误代码.
make run 就能查看仿真波形图.

5. 仿真结果图

在这里插入图片描述

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

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

相关文章

高效办公必备:2024四款免费PDF转换器推荐!

PDF文件的管理和转换离不开一些PDF转换器的使用。今天就给大家盘点几个好用免费的PDF转换器&#xff0c;帮助大家轻松应对各种文档转换任务 福昕PDF转换大师&#xff08;365客户端&#xff09; 直达链接&#xff1a;www.pdf365.cn/pdf2word/ 操作教程&#xff1a;立即获取 …

Windows系统总是占用内存过高的解决方法

文章目录 1. Antimalware Service Executable占用CPU过多1.1 问题1.2 解决方法&#xff1a;关闭实时保护&#xff0c;并且添加排除项 2. wsappx占用CPU过多2.1 问题2.2 解决方法&#xff1a;关闭应用更新等选项 3. 内存一直高于50%3.1 解决方法1&#xff1a;关机&#xff0c;重…

关于新国标强制电动车应内置北斗定位模块的规定有哪些?附北斗定位芯片对比参数

关于新国标要求电动自行车内置的北斗定位功能&#xff0c;需要符合以下几点&#xff1a; 支持UART或SPI接口至少支持接收处理北斗B1C和B2a信号具备定位信息的采集、存储和发送功能&#xff08;其中定位信息包括&#xff1a;经度、纬度、速度、定位时间&#xff09;具备采集、存…

C++之多继承

普通的继承中,子类的虚表是从父类拷贝过来的,子类新增加的特有的虚函数&#xff0c;会添加在这个虚表里。参考文章&#xff1a;CSDN 多继承 问&#xff1a;如果A1、A2中有相同的虚函数&#xff0c;覆盖谁的&#xff1f; 答案&#xff1a;覆盖A1的 多继承还存在一种特殊情况——…

Docker SDK for Python 交互

目录 1. 创建 Docker 客户端 2. 列出所有容器 3. 容器内执行命令 4. 启动和停止容器 5. 创建和运行新容器 6. 获取容器日志 7. 删除容器 8. 处理镜像 使用 Docker SDK for Python 进行交互非常方便&#xff0c;可以执行各种操作&#xff0c;如管理容器、镜像、网络等。…

动态规划-简单多状态dp问题——714.买卖股票的最佳时机含手续费

1.题目解析 题目来源&#xff1a;714.买卖股票的最佳时机含手续费——力扣 测试用例 2.算法原理 1.状态表示 本题有两种状态&#xff0c;一种是卖出状态一种是买入状态 我们创建两个dp表来分别存储这两种状态&#xff0c;f[]表示买入&#xff0c;g[]表示卖出 f[i]表示第i个位…

一个Idea:爆改 T480

爆改 T480 准备大改 T480&#xff0c;家里有一台闲置很久的 T480&#xff0c;不舍得扔&#xff0c;打算升级一下。看了几位up主的视频后&#xff0c;决定动手改造。 计划如下 网卡&#xff1a;加装4G网卡硬盘&#xff1a;更换为 1T 的 NVMe 2280 固态硬盘内存&#xff1a;升…

WordPress添加meta标签做seo优化

一、使用function.php文件添加钩子函数添加 方法1、使用is_page()判断不同页面的page_id进行辨别添加不同页面keyword和description &#xff08;1&#xff09;通过页面前台源码查看对应页面的id &#xff08;2&#xff09;或者通过wordpress后台&#xff0c;点击页面列表&…

基于BeautyEye开发Java程序用户界面

文章目录 I idea引入jar包添加本地jar包maven方式引入本地包方式1:将第三方JAR包安装到本地仓库maven方式引入本地包方式2:引用本地路径将本地jar包打进war包Maven内置变量说明II BeautyEye Swing外观实现方案案例III 知识扩展Swing常用的顶级容器BeautyEye SwingI idea引入j…

南京邮电大学电工电子A实验十二(集成触发器及其应用和计数与分频电路)

文章目录 一、实验报告预览二、Word版本报告下载 一、实验报告预览 二、Word版本报告下载 点我

6本“灌水神刊”SCI,沾边可录,可选非OA,1个月Accept!

01 录用快刊 1、Drones • 影响因子&#xff1a;4.4 • 期刊分区&#xff1a;JCR1区&#xff0c;中科院2区 • 检索数据库&#xff1a;SCI • 征稿领域&#xff1a;该杂志主要关注无人机的设计和应用&#xff0c;包括无人机&#xff08;UAV&#xff09;、无人机系统&#x…

100. UE5 GAS RPG 显示范围魔法的攻击范围

在这一篇里&#xff0c;我们将制作一个范围魔法&#xff0c;释放魔法时&#xff0c;我们将在鼠标拾取位置绘制一个魔法光圈&#xff0c;用于显示技能释放时攻击的范围&#xff0c;然后再次点击可以释放技能。 创建贴花类 魔法范围标识的光圈&#xff0c;我们采用贴花实现&…

测试200个用户在10秒之内同时访问百度的网页

右键添加->线程->线程组 得到下面的截图 线程数&#xff1a;就是模仿用户并发的数量&#xff0c;Ramp-up:运行线程的总时间&#xff0c;单位是秒&#xff0c;循环次数&#xff1a;就是每个线程循环多少次。 现在的线程数是200&#xff0c;就是相当于有200个用户&#xff…

Internet Download Manager下载器2025绿色版带你飞一般的下载体验

Internet Download Manager下载器&#xff1a;带你飞一般的下载体验 &#x1f31f; **极速下载&#xff0c;秒变大神&#xff01;** 兄弟姐妹们&#xff0c;还在为龟速的下载速度抓狂吗&#xff1f;&#x1f620; 今天要给大家安利一款神奇的下载神器——Internet Download Ma…

Linux升级openssl版本

Linux升级openssl版本 服务器编译依赖库检查 $ yum -y install gcc gcc-c make libtool zlib zlib-devel版本检测 $ openssl version OpenSSL 1.0.1e-fips 11 Feb 2013 $ ssh -V OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 2013下载openssl 地址&#xff1a;https://www.o…

Linux的hadoop集群部署

1.hadoop是一个分布式系统基础架构,主要解决海量数据额度存储与海量数据的分析计算问题 hdfs提供存储能力,yarn提供资源管理能力,MapReduce提供计算能力 2.安装 一:调整虚拟机内存,4G即可 二:下载安装包 网址:https://mirrors.aliyun.com/apache/hadoop/common/hadoop-3.4.0/…

Java知识巩固(五)

目录 基本数据类型 基本类型和包装类型的区别&#xff1f; 自动装箱与拆箱了解吗?原理是什么&#xff1f; 为什么浮点数运算的时候回邮精度丢失的风险&#xff1f; 如何解决浮点数运算的精度丢失问题&#xff1f; 超过 long 整型的数据应该如何表示&#xff1f; 基本数据…

javaWeb项目-Springboot+vue-车辆管理系统功能介绍

本项目源码&#xff08;点击下方链接下载&#xff09;&#xff1a;java-springbootvue车辆管理系统设计与实现源码(项目源码-说明文档)_若依检车管理系统资源-CSDN文库 项目关键技术 开发工具&#xff1a;IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架&#xff1a;ssm…

Sentinel最全笔记,详细使用步骤教程清单

一、Sentinel的基本功能 1、流量控制 流量控制在网络传输中是一个常用的概念&#xff0c;它用于调整网络包的发送数据。然而&#xff0c;从系统稳定性角度考虑&#xff0c;在处理请求的速度上&#xff0c;也有非常多的讲究。任意时间到来的请求往往是随机不可控的&#xff0c;…

SpringCloud无介绍快使用,sentinel服务熔断功能与持久化(二十四)

TOC 问题背景 从零开始学springcloud微服务项目 注意事项&#xff1a; 约定 > 配置 > 编码IDEA版本2021.1这个项目&#xff0c;我分了很多篇章&#xff0c;每篇文章一个操作步骤&#xff0c;目的是显得更简单明了controller调service&#xff0c;service调dao默认安装ngi…