Verilog语法基础HDL Bits训练 01

2023-05-16

文章目录

  • 前言
  • 一、Basics:simple wire
    • 1.RTL代码
    • 2.仿真波形图
  • 二、Basics:four wires
    • 1.RTL代码
    • 2.仿真波形图
  • 三、Basics:Not gate
    • 1.RTL代码
    • 2.仿真波形图
  • 四、Basics:And gate
    • 1.RTL代码
    • 2.仿真波形图
  • 五、Basics:Nor gate
    • 1.RTL代码
    • 2.仿真波形图
  • 六、Basics:Xnor gate
    • 1.RTL代码
    • 2.仿真波形图
  • 七、Basics:Wire decl
    • 1.RLT代码
    • 2.仿真波形图
  • 八、Baics:7485 chip
    • 1.RTL代码
    • 2.仿真波形图
  • 总结

前言

在我学习FPGA之前,看过好多up主讲解怎样学习FPGA,在他们的视频中,总是能不约而同地能看到一个网站的名字:HDL Bits,这是一个训练Verilog语法的网站,可以对语法基础起到很正向的作用,因此我在今天开始,每天都会将HDL Bits中的练习题整理出来,并附上一些自己的理解,如有表述错误,请敬请见谅,并且在评论区告诉我~

注;图片均来自于HDL Bits

一、Basics:simple wire

在这里插入图片描述
线型,与物理导线不同,Verilog中的线型信号是定向的,这意味着信息只向一个方向流动,在连续赋值语句(assign left_side=right_side)中,右边信号的值被驱动到左边的连线上,赋值是连续的,因为即使右边的值发生变化,赋值也会一直持续下去,连续的赋值不是一次性事件,而是连续、一直进行着的。

1.RTL代码

module top_module(
	input in,
	output out);
	
	assign out = in;
	
endmodule 

2.仿真波形图

在这里插入图片描述

二、Basics:four wires

在这里插入图片描述
当你有多个赋值语句时,它们在代码中出现的顺序并不重要,与编程语言不同,赋值语句描述的是事物之间的链接,而不是从一个事物复制到另一个事物的操作。

1.RTL代码

module top_module( 
    input a,b,c,
    output w,x,y,z );
	
    assign w=a;
    assign x=b;
    assign y=b;
    assign z=c;
    
endmodule

2.仿真波形图

在这里插入图片描述

三、Basics:Not gate

在这里插入图片描述
Not gate:基本门电路非门,输出等于输入的非

1.RTL代码

module top_module(
	 input in,
	 output out );
	
    assign out=~in;
    
endmodule

2.仿真波形图

在这里插入图片描述

四、Basics:And gate

在这里插入图片描述
And gate:基本门电路与门,输出值等于两个输入值的与,a和b全为1时输出为1,否则为0

1.RTL代码

module top_module( 
    input a, 
    input b, 
    output out );

    assign out = a & b;
    
endmodule

或者还可以写成

	assign out = (a && b)? 1'b1:1'b0;

2.仿真波形图

在这里插入图片描述

五、Basics:Nor gate

在这里插入图片描述
Nor gate:基本门电路或非门:输出等于两个输入的或非,当a和b同时为0时,输出为1,否则都为0

1.RTL代码

module top_module( 
    input a, 
    input b, 
    output out );

    assign out = ~(a | b);
    
endmodule

或者还可以写成

	assign out = (a || b)? 1'b0:1'b1;

2.仿真波形图

在这里插入图片描述

六、Basics:Xnor gate

在这里插入图片描述
Nor gate:基本门电路同或门在这里插入图片描述

1.RTL代码

module top_module( 
    input a, 
    input b, 
    output out );

    assign out = (a & b) | (~a & ~b);
    
endmodule

2.仿真波形图

在这里插入图片描述

七、Basics:Wire decl

在这里插入图片描述
本次训练是声明wire型信号,随着电路变得越来越复杂,将需要电线来连接内部元件。 当需要使用连线时,应该在模块体中声明它,在它第一次被使用之前的某个地方。

1.RLT代码

`default_nettype none
module top_module(
    input a,
    input b,
    input c,
    input d,
    output out,
    output out_n   ); 
    
    wire w1;
    wire w2;
    wire w3;
    
    assign w1 = a & b;
    assign w2 = c & d;
    assign w3 = w1 | w2;
    assign out = w3;
    assign out_n = ~w3;

endmodule

2.仿真波形图

在这里插入图片描述

八、Baics:7485 chip

在这里插入图片描述
7485 chip:7485比较器芯片,可根据门电路组合直接写出代码

1.RTL代码

module top_module ( 
    input p1a, p1b, p1c, p1d, p1e, p1f,
    output p1y,
    input p2a, p2b, p2c, p2d,
    output p2y );

    assign p1y = (p1a & p1b & p1c) | (p1d & p1e & p1f);
    assign p2y = (p2a & p2b) | (p2c & p2d);

endmodule

2.仿真波形图

在这里插入图片描述

总结

本章节的八个小设计是很简单也很基础的设计,代码写法可以多种多样,但要养成良好的代码编写习惯,才可以走得更远。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Verilog语法基础HDL Bits训练 01 的相关文章

  • Verilog 位更改位置

    假设我有一个寄存器reg 15 0 my reg 其中包含一个16位signed sample 如何找到第一位变化的位置 意思是 如果假设my reg 16 b0001011011010111 我怎么知道第一个变化是0 to 1 is at
  • Quartus Prime 中的“多个常量驱动程序”Verilog 错误

    我正在致力于用 Verilog 设计一个有限状态机来表示堆栈 该模块如下 module state machine s Enable Clock Resetn c OF Err UF Err input 2 0 s input Enable
  • 64 位 ALU 输出在 TestBench 波上显示高阻抗

    我必须制作一个 64 位 ALU 它接受 A 和 B 64 位输入 进位输入输入并输出 64 位结果以及 1 位进位输出 还有一个 5 位功能选择 FS 其中 FS 0 控制 B 是否反转 使用 2to1 多路复用器 F 1 对 A 执行相
  • 如何在 Verilog 中定义带参数的模块?

    我想定义一个add有一个参数的模块 但我对新实例的声明进展不顺利 我想定义这个模块的一个实例 module add parameter wd 1 input wire wd 1 0 a b output wire wd 1 0 o assi
  • Vivado 比特流消息:违反规​​则 (LUTLP-1) 组合循环

    我在串流时遇到问题 该项目旨在创建一个占空比为 1 2 的时钟 综合和实现过程中没有任何问题 我尝试了几种方法来解决它 但他们的表现并不好 module clock div clk clk out input clk output reg
  • 「Verilog学习笔记」游戏机计费程序

    专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点 刷题网站用的是牛客网 timescale 1ns 1ns module game count input rst n 异位复位信号 低电平有效 input clk 时
  • 「Verilog学习笔记」游戏机计费程序

    专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点 刷题网站用的是牛客网 timescale 1ns 1ns module game count input rst n 异位复位信号 低电平有效 input clk 时
  • VHDL乘法器

    library IEEE use IEEE STD LOGIC 1164 ALL entity Lab3 Adder1 is Port cin in STD LOGIC a in STD LOGIC VECTOR 3 downto 0 b
  • 如何在RTL中使用时钟门控?

    我正在对一些时钟进行门控latch以及我设计中的逻辑 我在综合和布局布线方面没有太多经验 在 RTL 中实现时钟门控的正确方法是什么 示例1 always comb begin gated clk clk latch update en e
  • 将枚举转换为逻辑

    考虑以下模块声明 module DFF d q CLK RESET parameter W 2 input W 1 0 d input CLK input RESET output logic W 1 0 q endmodule 当 d 和
  • 如何获取值数组作为 plusargs?

    如何获取值数组作为参数 我需要从命令行获取一组未定义大小的命令 如何将这些参数放入数组或队列中 Eg CMDS READ WRITE READ N WRITE 它应该被带到一个数组中 value plusargs不支持数组 但支持字符串 看
  • 如何将时钟门映射到技术库单元

    我的设计中有以下时钟门 module my clkgate clko clki ena Clock gating latch triggered on the rising clki edge input clki input ena ou
  • 如何使用 Verilog 和 FPGA 计算一系列组合电路的传播延迟?

    我是 FPGA 和 HDL 的新手 但我正在尝试学习 但无法弄清楚这一点 如何通过多个级别的组合逻辑来计算或估计传播延迟 我可以仅凭经验确定这一点 还是可以在设计时弄清楚 在这种情况下 我使用 FPGA 来实现奇偶校验设置和检查电路 该电路
  • Verilog 中的“net”代表什么?

    我刚刚开始学习Verilog 据我了解 Verilog有net数据类型 什么是net代表 网络就是这样一种数据类型 您不使用它来存储值 它们代表物理连接 您可以将线路视为一种网络数据类型 你可以去网上看看更多here http www ee
  • 在 Mac OS X 10.6.8 上用什么来编译和模拟 Verilog 程序?

    作为教学大纲的一部分 我需要模拟 Verilog 程序 但是 我的大学使用 Xilinx ISE 但它不适用于 Mac 因此 请帮助我提供最好的软件以及有关如何安装和使用它们的一些详细步骤 你可以尝试伊卡洛斯 Verilog http iv
  • 在 Verilog 设计中产生时钟故障

    我正在使用 Verilog 设计芯片 我有一个 3 位计数器 我希望当计数器处于第 8 次循环时 应该有一个时钟故障 之后就可以正常工作了 在 Verilog 设计中产生时钟故障的可能方法是什么 在时钟信号上注入毛刺的一种方法是使用forc
  • 为什么 Verilog 不被视为编程语言? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 教授在课堂上说学生不应该说他们学会了用Verilog 编程 他说 Verilog 之类的东西不是用来编程的 而是用来设计的 那么 Verilog
  • 我怎样才能让我的verilog移位器更通用?

    这里我有一个移位器 但现在它最多只能工作 3 位 我一直在寻找 但不知道如何让它工作最多 8 位 module shifter a b out input 7 0 a b output 7 0 out wire 7 0 out1 out2
  • 系统 verilog 中没有类型的输入

    我在一个系统 verilog 代码的输入和输出的示例中遇到过module没有说明它们的类型 例如logic wire module mat to stream input 2 0 2 0 2 0 a b input newdata inpu
  • 如何在 icarus verilog 中包含文件?

    我知道基本的 include filename v 命令 但是 我试图包含另一个文件夹中的模块 现在 该模块还包括同一文件夹中存在的其他模块 但是 当我尝试在最顶层运行该模块时 出现错误 C Users Dell Desktop MIPS

随机推荐

  • 计算机保研面试题——计算机网络

    目录 计算机网络体系结构 OSI xff0c TCP IP xff0c 五层协议的体系结构 xff0c 以及各层协议 IP地址的分类 32位地址 各种协议 xff1f TCP三次握手和四次挥手的全过程 六 TCP和UDP的区别 xff1f
  • 论文学习:Austere Flash Caching with Deduplication and Compression

    论文题目 xff1a Austere Flash Caching with Deduplication and Compression 来源 xff1a USENIX ATC 2020 链接 xff1a Austere Flash Cach
  • ubuntu 查看占用文件空间大小

    1 查看分区情况 fdisk l 2 查看系统的磁盘空间占用情况 df h df TH 3 查看某个目录的使用空间大小 du sh 需要先进入该目录 或者后面加上路径 du sh 路径 4 查看该目录下 每个文件夹占用的空间大小 查看某目录
  • 操作系统地址生成

    逻辑地址生成 从符号逻辑地址 gt 内存中具体的逻辑地址 不需要操作系统的帮助 xff0c 而是通过编译器 load等等完成 对于程序代码 cfile开始 xff0c 最开始的逻辑地址是对应的函数位置 变量名称 xff0c 通过编译成为 s
  • 主流数据库以及适用场景思维导图

  • 超声波测距模块(HC-SR04模块)特点及使用介绍

    超声波测距模块 xff08 HC SR04模块 xff09 特点及使用介绍 前言一 超声波测距模块 xff08 HC SR04模块 xff09 外观二 原理图三 相关参数讲解1 参数2 测量范围3 计算公式4 优点5 产品特性 xff08
  • ESP8266AT指令测试无返回值的问题

    ESP8266AT指令测试无返回值 xff1a 如图 xff0c 在使用esp8266测试at指令的时候无返回值 xff0c 然而我在检查硬件的时候没有任何错误 xff0c usb转ttl模块也是没有问题的 解决方法 xff1a 这时候只要
  • 重要:智能指针的使用(C++ 11 以上)

    智能指针的声明与初始化 xff1a 第一种 xff1a std shared ptr 指针 初始化方式1 xff08 推荐 xff09 std shared ptr lt int gt sp3 sp3 61 std make shared
  • 自顶向下和自底向上的实现方法

    1将一个大问题分解为小的易处理的子问题 xff0c 每个子问题可以使用一个方法来实现 xff0c 这种方法使得问题更加易于编写重用调试 xff0c 修改和维护 2当一个大问题分解为许多子问题 xff0c 各个子问题可以分配给不同的编程人员
  • c# --- 接口

    接口从某种程度上来说也是一个类 xff0c 但是接口中只包含方法的声明而没有方法的实现z 创建接口的关键字 xff1a interface 接口 xff0c 人机交互界面 创建接口的语法 xff1a 接口的访问权限 interface 接口
  • MAML++:HOW TO TRAIN YOUR MAML论文精读

    论文地址 https arxiv org abs 1810 09502 Abstract MAML是目前通过元学习进行少样本学习的最佳方法之一 MAML简单 xff0c 优雅和非常强大 xff0c 然而 xff0c 它有各种各样的问题 xf
  • webpack中的loader

    什么是loader loader是webpack中一个非常核心的概念 webpack用来做什么呢 xff1f 在我们之前的实例中 xff0c 我们主要是用webpack来处理我们写的js代码 xff0c 并且webpack会自动处理js之间
  • strtok()函数

    strtok 将字符串拆分成tokens xff0c tokens是被分隔符中的任何字符分隔的连续字符序列 char strtok char str const char sep sep参数是个字符串 xff0c 定义了用作分隔符的字符集合
  • MySQL夺命连环15问,你能坚持到第几问?

    文章目录 前言一 关系型和非关系型的区别 xff0c 以及使用场景二 Mysql索引优缺点三 给字段加索引最好怎么加 xff1f 四 什么情况下会导致索引失效 xff1f 五 为什么使用模糊匹配会使索引失效六 回表查询和索引覆盖是什么七 联
  • educoder数字逻辑实训:比较器设计(Logisim)

    第1关 xff1a 1位比较器设计 任务描述 本关任务 xff1a 在Logisim中完成1位比较器电路的绘制并完成测试 第2关 xff1a 2位比较器设计 任务描述 本关任务 xff1a 在Logisim中完成2位比较器电路的绘制并完成测
  • 1、树莓派的VNC文件传输

    目录 第一步 xff1a 在树莓派端打开VNC服务器 第二步 xff1a 输入指令运行vncserver 第三步 xff1a 在电脑端安装VNC查看器 第一步 xff1a 在树莓派端打开VNC服务器 第二步 xff1a 输入指令运行vncs
  • Hadoop 3.x(HDFS)----【HDFS 的读写流程】

    Hadoop 3 x xff08 HDFS xff09 HDFS 的读写流程 1 HDFS写数据流程1 剖析文件写入2 网络拓扑 结点距离计算3 机架感知 xff08 副本存储节点选择 xff09 1 机架感知说明2 Hadoop3 1 3
  • 【C++】程序运行时间计算的方式

    1 利用C 43 43 标准库 std chrono xff0c 如下计算一个主体程序的运行时间 xff0c 算出来的时间差值单位为毫秒 lt float std milli gt 表示用毫秒表示 auto t start 61 std c
  • FPGA之蜂鸣器播放音乐《花海》

    文章目录 前言一 蜂鸣器1 蜂鸣器简介 xff1a 2 有源蜂鸣器 xff1a 3 无源蜂鸣器 xff1a 二 简谱常识1 音符时值 xff1a 2 简谱名 xff1a 3 简谱名频率 xff1a 三 程序设计1 调用ROM IP核储存每个
  • Verilog语法基础HDL Bits训练 01

    文章目录 前言一 Basics simple wire1 RTL代码2 仿真波形图 二 Basics four wires1 RTL代码2 仿真波形图 三 Basics Not gate1 RTL代码2 仿真波形图 四 Basics And