初识verilog HDL

为什么选择用Verilog HDL开发FPGA???

  硬件描述语言(Hardware Descriptipon Lagnuage,HDL)通过硬件的方式来产生与之对应的真实的硬件电路,最终实现所设计的预期功能,其设计方法与软件不同,因此也就意味着描述的各个功能之间可以和硬件一样实现真正的并行互动。将这种语言成为硬件描述语言而非硬件语言的原因是:这种语言是用来描述我们设计的硬件所要实现的功能,而不是直接对硬件进行设计。

  目前常用的语言是  verilog HDL 和  VHDL。对比而言,

  VHDL和Verilog 相比,VHDL语法比Verilog严谨。VHDL语法比Verilog冗长,所以建议学习Verilog做为FPGA开发语言。

  Verilog inout端口

  

module  test
(input    wire    sel         ,input    wire    data_out    ,inout    wire    data_bus    ,input    wire    data_in
);assign data_in  = data_bus    ;assign data_bus = (sel == 1'b1)?data_out:1'bz; endmodule

Verilog中的系统任务和系统函数

  verilog语言中定义了一些任务和函数,用于完成一些特殊功能,它们称为系统任务和系统函数,这些函数大多数只能在TB仿真中使用,使我们更方便验证。

    

·timescale 1ns/1ns   //`timescale 表示时间尺度预编译指令   1ns/1ns  表示 时间单位  时间精度

时间单位和时间精度由值1、10和100以及单位s、ms、us、ns、ps、fs组成。

时间单位定义了仿真过程与时间相关量的单位。仿真中使用“#数字” 表示延时 #10 表示延时10ns

  主要函数如下:

  1、 $display("%b + %b = %d",a,b,c);

`timescale 1ns/1nsmodule tb_test();reg [3:0]    a    ;reg [3:0]    b    ;reg [3:0]    c    ;initialbegin$display("hello");$display("Embedfire");a = 4'd5    ;b = 4'd6    ;c = a + b   ;#100;$display("%b + %b = %d",a,b,c);endendmodule

2 $write输出信息

`timescale 1ns/1nsmodule  tb_test();reg [3:0]    a    ;reg [3:0]    b    ;reg [3:0]    c    ;initialbegin$write("hello")    ;$write("Embedfire") ;a = 4'd5    ;b = 4'd6    ;c = a + b   ;#100;$write("%b + %b = %d\n",a,b,c);endendmodule

3 $strobe输出信息

`timescale 1ns/1nsmodule tb_test();reg [3:0]    a    ;reg [3:0]    b    ;reg [3:0]    c    ;initialbegin$strobe("strobe:%b + %b = %d",a,b,c);a = 4'd5        ;#display("display:%b + %b = %d",a,,b,c);b = 4'd6    ;c = a + b    ;endendmodule

4 $monitor用于持续监测变量

`timescale 1ns/1nsmodule tb_test();reg [3:0]    a    ;reg [3:0]    b    ;reg [3:0]    c    ;initialbegina = 4'd5    ;#100    ;b = 4'd6    ;#100    ;c = a + b    ;endinitialbegin$monitor("%b + %b = %d ",a,b,c)    ;endendmodule

5 $stop用于暂停仿真,$finish用于仿真结束

`timescale 1ns/1nsmodule tb_test();initialbegin$display("hello")                ;$display("Embedfire")            ;    #100                             ;#display("Stop Simulation")      ;$stop    ;$display("Continue Simulation")  ;#100    ;$display("Finish Simulation")    ;#finish    ;  endendmodule

6  $time为时间函数,返回64位当前仿真时间;$random用与产生随机函数,返回随机数。

`timescale 1ns/1nsmodule tb_test();reg [3:0]    a    ;always # 10 a = $random    ;initialbegin$monitor("a = %d,time :%d",a,$time)    ;endendmodule

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

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

相关文章

硬件设计-齐纳管

目录 摘要 详情 齐纳管的工作电流、 摘要 齐纳管(Zener Diode)是一种特殊的二极管,它能够在特定的反向电压下保持电流稳定。正常情况下,二极管只允许正向电流通过,而阻止反向电流流过。而齐纳管在一定的反向电压下可…

【算法C++】数字分组求偶数和

问题描述 小M面对一组从 1 到 9 的数字,这些数字被分成多个小组,并从每个小组中选择一个数字组成一个新的数。目标是使得这个新数的各位数字之和为偶数。任务是计算出有多少种不同的分组和选择方法可以达到这一目标。 numbers: 一个由多个整数字符串组…

如何使用Yarn Workspaces实现Monorepo模式在一个仓库中管理多个项目

Yarn Workspaces是Yarn提供的一种依赖管理机制,它支持在单个代码仓库中管理多个包的依赖。这种机制非常适合需要多个相互依赖的包的项目,能够减少重复依赖,加快依赖安装速度,并简化依赖管理。下面将详细介绍如何使用Yarn Workspac…

附加共享数据库( ATTACH DATABASE)的使用场景

附加共享数据库(使用 ATTACH DATABASE)的功能非常实用,通常会在以下几种场景下需要用到: 1. 跨数据库查询和分析 场景: 你的公司有两个独立的数据库: 一个存储了学生信息 (school.db)一个存储了员工信息 …

阿里云ios镜像源

阿里云镜像源:阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 下载centos7

《拉依达的嵌入式\驱动面试宝典》—计算机网络篇(二)

《拉依达的嵌入式\驱动面试宝典》—计算机网络篇(二) 你好,我是拉依达。 感谢所有阅读关注我的同学支持,目前博客累计阅读 27w,关注1.5w人。其中博客《最全Linux驱动开发全流程详细解析(持续更新)-CSDN博客》已经是 Linux驱动 相关内容搜索的推荐首位,感谢大家支持。 《…

用vscode+ollama自定义Cursor AI编辑的效果

在vscode上搜索Continue 添加大语言模型 选择对应的本地模型版本 效果

使用宝塔面板,安装 Nginx、MySQL 和 Node.js

使用ssh远程链接服务器 在完成使用ssh远程链接服务器后 可使用宝塔面板,安装 Nginx、MySQL 和 Node.js 宝塔网站 一、远程链接服务器 二、根据服务器系统安装宝塔 wget -O install.sh https://download.bt.cn/install/install_lts.sh && sudo bash inst…

Android车机DIY开发之软件篇(八)单独编译

Android车机DIY开发之软件篇(八)单独编译 1.CarLauncher单独编译 CarLauncher源码位于 packages/apps/Car/Launcher 用Eclipse ADT 谷歌定制版编译而成,.mk .bp编译 Android13目录如下: alientekalientek:~/packages/apps/Car$ ls Calendar …

SQL进阶实战技巧:统计用户的累计消费金额及VIP等级?

目录 0 问题描述 1 数据准备 2 代码实现 3 问题拓展 问题延伸:查询首次下单后第二天连续下单的用户比率

鸿蒙面试 2025-01-11

ArkTs 和TS的关系? ArkTS(方舟开发语言)与 TypeScript(TS)存在紧密联系,同时也有显著区别: 联系 语法基础:ArkTS 在语法层面大量借鉴了 TypeScript ,TypeScript 里诸如…

SpringCloud项目搭建快速入门

SpringCloud项目搭建 注意:本项目采用JDK17,且已上传至Gitee,可自行下载 父工程创建方式一 Step1: 创建一个Maven聚合工程ScDemo 创建完成后删除除pom.xml文件外的所有文件及目录 Step2: 设置Mven为本地Maven 博主已进…

vue(2,3), react (16及以上)开发者工具资源

在前端开发的广阔领域中,Vue.js 和 React.js 作为两大主流框架,各自拥有庞大的用户群体和丰富的生态系统。为了帮助开发者更高效地进行调试和开发,Vue Devtools 和 React 开发者工具应运而生,成为这两个框架不可或缺的辅助工具。本…

芯片:为何英伟达的GPU能在AI基础设施领域扮演重要角色?

英伟达的GPU之所以能在AI基础设施领域扮演重要角色,主要源于其硬件架构的优势以及其与深度学习算法的高度兼容性。以下是几个关键因素: 1. 并行计算能力 GPU(图形处理单元)本质上是为处理大量并行计算任务而设计的。与CPU相比&a…

新手入门 React .tsx 项目:从零到实战

🚀 新手入门 React .tsx 项目:从零到实战 💻✨ 如果你是 React 新手,刚接触 .tsx 文件,不要担心!跟着这份指南,一步一步来,你很快就能上手了!👇 &#x1f4d…

RabbitMQ 进阶

文章目录 一、发送者的可靠性1.1 生产者重试机制:1.2 生产者确认机制:1.2.1 开启生产者确认:1.2.2 定义 ReturnCallback:1.2.3 定义 ConfirmCallback: 二、MQ 的可靠性2.1 数据持久化:2.1.1 交换机持久化&a…

L4-Prompt-Delta

Paper List PromptPapers:https://github.com/thunlp/PromptPapersDeltaPapers: https://github.com/thunlp/DeltaPapers Programming Toolkit OpemPrompt: https://github.com/thunlp/OpenPromptOpenDelta: https://github.com/thunlp/OpenDelta 一、传统微调方法&#xff1…

【深度学习入门_基础篇】概率论

开坑本部分主要为基础知识复习,新开坑中,学习记录自用。 学习目标: 随机事件与概率、随机变量及其分布、多维随机变量及其分布、大数定律与中心极限定理。 强烈推荐此视频: 概率论_麻省理工公开课 废话不多说,直接…

Vision Transformer (ViT)原理

Vision Transformer (ViT)原理 flyfish Transformer缺乏卷积神经网络(CNNs)的归纳偏差(inductive biases),比如平移不变性和局部受限的感受野。不变性意味着即使实体entity(即对象)的外观或位…

【云计算】OpenStack云计算平台

OpenStack云计算平台框架搭建 1.先换源 先换成阿里源: curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 2.安装框架 yum -y install centos-release-openstack-train 3.安装客户端 yum -y install python-openstackclient 但…