verilog学习笔记(二)程序的基本结构

systemverilog中门类型-1-三态门three state gates 三态门主要有bufif0/bufif1/notif0/notif1 三态门使能们实例声明语法: gate_instantiation ::= enable_gatetype [drive_strength] [delay3] enable_gate_instance { , enable_gate_instance } ; enable_gatetype ::= bufif0 | bufif1 | notif0 | notif1 enable_gate_instance ::= [ name_of_inst 阅读详情

verilog学习笔记


前言

前面的学习笔记是在看程序时遇到什么问题就记下来然后去查资料整理的,后续的学习笔记会更加系统的整理verilog相关的内容。


一、Verilog语言的逻辑抽象层级

Verilog作为硬件电路语言,将电路抽象为程序,用代码去控制电路的运行。我们可以使用verilog语言去实现各种各样的功能。当需要去完成一个复杂的工程时,我们需要将工程分解为多层次的任务,在将工程分解为任务后,我们要用硬件语言去实现这些任务,verilog在实现功能时将抽象为以下五个级别。

抽象级别:

系统级:用语言提供的高级结构实现模块外部性能

算法级:实现算法运行

RTL级:数据在寄存器之间流动和处理,控制这些数据流动的模型

上面3个都是行为描述,下面两个与逻辑电路有明确对应

门级:逻辑门的描述

开关级:三极管和储存节点

二、verilog程序的构成

下面介绍构成verilog程序的几个主要部分

verilog程序主要由模块组成,由不同的模块可以建立一个结构复杂的大型工程。

首先是always语句

always @(s or a or b)
  out=a;

s,a,b三者任意一个出现变化就执行后续的语句

没有always的模块会一直响应和电路一样

下面添加的延迟是在模块输入到输出的延迟

And #1 U1();

And #1 U2();

Assign 赋值语句,用reg类型的变量对wire类型的变量赋值,要用到assign,下面是一个进位加法器的实现

module add(a,b,c,d)
  input[2:0] a,b;
  output[2:0] c;
  output d;

  assign{d,c}=a+b;
endmodule

输入量一般是reg型,输出一般是wire型,上面的程序实现的是2位带进位的加法。

其中d是进位,c是a和b的和。通过这样的语法,我们就用verilog语言实现了电路的功能。

一个模块可以实现的功能是有限的,特别是像verilog这样的硬件语言,我们为了实现复杂的功能一般需要多个模块互相调用。

调用verilog内部模块bufif1,其中bufif1是模块,mybuf是实例名。verilog自带了很多的模块,这些模块是已经成熟的电路结构,平时直接调用即可。

bufif1 mybuf(out, in,enable);

当我们需要调用其他v文件时,和c语言类似,在v文件的开头进行引用即可。

`include”muxtwo.v”

verilog程序由模块构成。模块主要分为端口和逻辑功能实现,而模块之间是通过端口来交互数据的,当引用模块时要严格按声明顺序输入端口变量。

端口变量主要分为3种:

input输入变量

output输出变量

inout输入输出变量

逻辑功能主要分为3个部分:

1 Assign声明语句,最常用的组合逻辑声明。

2 实例引用,调用其他的模块

3 Always内部顺序执行,多个always间并行,称为过程块,只有上面两个可以独立于过程块存在,其他的语句要在过程块内。既可以描述组合逻辑,也可以描述时序逻辑。

三者是并发运行的,没有添加时延的话就是同时运行。

verilog中的逻辑与数字表示:

z代表高阻态

?也代表高阻态

x代表不定值

_下划线用于分隔数的表达,提高可读性,只能用在确定的数

当常量不说明位数,默认位宽为32位

Parameter常数定义

可以通过引用实例改变模块内部的parameter

module a(A,F):
  parameter w=1.p=1;
  ...
endmodule

module top:
   A #(4,0) D1(A,F);  //将wp改为4,0
  A #(3) D2(A,F);   //将w改为3
endmodule

总结

本文对于Verilog程序的基本结构进行了讲解,后面会对变量与操作符进行介绍。

【Verilog】二、Verilog基础语法 FPGA Verilog基础语法 阅读详情

相关推荐

Verilog基本代码结构及常用语句always、begin...end解读

Verilog基本代码结构及常用语句always、begin...end解读 线性反馈以为寄存器(LFSR)

weixin_62380586的博客 1万+

[转]Verilog门级建模

门级建模就是将逻辑电路图用HDL规定的文本语言表示出来,即调用Verilog语言中内置的基本门级元件描述逻辑图中的元件以及元件之间的连接关系。   Verilog语言内置了12个基本门级元件模型,如下表所示。门级元件的输出、输入必须为线网类型的变量。   1.多输入门   and、nand、or、nor、xor和xnor是具有多个输入的逻辑门,它们的共同特点是:只允许有一个输出,但可以...

weixin_30433075的博客 1372

Verilog进行结构描述(二):Verilog基本单元(primitives)

基本单元是Verilog开发库的一部分。大多数ASIC和FPGA元件库是用这些基本单元开发的。基本单元库是自下而上的设计方法的一部分。基本单元引脚的数目由连接到门上的net的数量决定。因此当基本单元输入或输出的数量变化时用户不需要重定义一个新的逻辑功能。Verilog基本单元提供基本的逻辑功能,也就是说这些逻辑功能是预定义的,用户不需要再定义这些基本功能。条件基本单元有三个端口:输出、数据输入、使能输入。

FPGA入门到跑路 1177

43,Verilog-2005标准篇:bufif1、bufif0、notif1 和 notif0 逻辑门

如果延迟指定为3个延迟,则第1个延迟决定上升延迟,第2个延迟决定下降延迟,第3个延迟决定到 z 的转换延迟,3个延迟中最小的延迟决定到 x 的转换延迟。如果延迟指定为2个延迟,则第1个延迟决定输出上升延迟,第2个延迟决定输出下降延迟,两个延迟中较小的延迟适用于到 x 和 z 的输出转换。数据输入值和控制输入值的某些组合可导致这些门输出两个值中的任何一个,而不偏向任何一个值。符号 L 代表数值为 0 或 z 的结果。端口列表中的第一个端口应连接输出端,第二个端口应连接数据输入端,第三个端口应连接控制输入端。

FPGA_LOVE的博客 2177

verilog基本语法学习笔记

表征模块的开始与结束。:模块名可由用户指定,可包含字母、数字及下划线,需以字母开头,区分大小写:赋值操作关键字,该关键字后可跟一个赋值表达式,该关键字是实现组合逻辑操作的一种主要描述方式。:表征该信号的方向,除输入、输出外还有一种inout(输入输出)型。

qq_41358574的博客 4990

EDA/PLD中的Verilog HDL的三态门

三态门有:bufif0 bufif1 notif0 notif1这些门用于对三态驱动器建模。这些门有一个输出、一个数据输入和一个控制输入。三态门实例语句的基本语法如下:tristate_gate[instance_name] (OutputA, InputB,ControlC);  第一个端口OutputA是输出端口,第二个端口InputB是数据输入,ControlC是控制输入。根据控制输入,输出可被驱动到高阻状态,即值z。对于bufif0,若通过控制输入为1,则输出为z;否则数据被传输至输出端。对于bufif1,若控制输入为0,则输出为z。对于notif0,如果控制输出为1,那么输出为z;否

FPGA:Verilog HDL程序的基本结构

⭐本专栏针对FPGA进行入门学习,从数电中常见的逻辑代数讲起,结合Verilog HDL语言学习与仿真,主要对组合逻辑电路与时序逻辑电路进行分析与设计,对状态机FSM进行剖析与建模。欢迎订阅,持续更新。🔥文章和代码已归档至【】,需要的朋友们自取。或者关注公众号【AIShareLab】,回复也可获取。

timerring的博客 1722

代码_Verilogbufif0_MUX2-1_bufif1_bufif0_

用bufif0和bufif1设计一个2选一选择器的延迟模块

Verilog学习笔记

Verilog VHD基本语法+实战操作 一、基本语法 1.1举个例子对verilog语言进行总体性概括 例1:描述一个adder的三位加法器 看该简单的代码编写,咱们可以得到如下结论: verilog HDL 程序是由模块构成的。每个模块的内容都是嵌套于module和endmodule两个语句之间。每个模块实现特定的功能。模块之间可以进行像C语言一样的嵌套方式。这样整合成模块就有一个好处:大型数字电路可以分割成很多小的模型来实现特定的功能,最后通过顶层的模块调用小模块来实现整体的功能。 每个模块都要进

da.的博客 4500

LPDDR4x 深度解析(3) - SDRAM核心操作机制

本文深入解析LPDDR4x SDRAM的核心操作机制,包括基础架构、刷新操作、读写流程及低功耗设计。详细介绍了存储阵列、地址解码器等关键模块,以及自刷新与自动刷新模式的区别。通过实测数据和技术细节,揭示LPDDR4x在性能优化和功耗控制方面的创新设计,为硬件工程师提供实用参考。

weixin_29278805的博客 308

Cisco三层交换机的详细配置

** 本文适用于新手小白以及微微基础的同学来用于参考,实验是在Cisco Packet Tracer Student 进行,实验最终效果如图所示,所有命令配置与图中的一致。 使用到的机器型号为:五台电脑,一台服务器,三个普通交换机(2960型号),一个三层交换机(3560-24PS),两台普通服务器(2811) 文章目录一、什么是三层交换机二、配置交换机步骤1.配置二层交换机2.配置三层交换机3.配置两台路由器以及最后一台电脑 一、什么是三层交换机 1.三层交换机 = 三层路由+二层交换机 2.工作在

真正的大师,永远都怀着一颗学徒的心。 4万+

verilog基本结构

一、verilog基本结构 verilog使用模块,每个模块对应电路中的逻辑实体,模块module由下面几部分组成: 模块声明; 输入/输出端口声明; 信号类型声明; 逻辑功能描述。 1.1 模块声明 格式: module 模块名(端口1,....,端口n); 例子: module example (in1,out1 ,inout1); 1.2 输入/输出端口说明 格式: inp...

努力为了更好 5873

【VAX 小番茄安装详细步骤】

本文详细介绍了在VS2022环境下安装Visual Assist X(番茄助手)的步骤及常见问题解决方案。主要内容包括:安装前的兼容性设置(需修改为Windows7兼容模式)、安装流程(卸载旧版本、勾选对应VS版本、替换关键dll文件)以及常见问题处理(如安装失败、工具栏图标缺失等)。文章提供了完整的下载链接和操作截图,特别强调了安装失败后的清理方法(注册表、安装目录和残余文件删除)。最后给出了安装成功后的测试运行指引。

qq_23962581的博客 1718

Verilog学习笔记(一)基本概念

Verilog学习笔记 文章目录Verilog学习笔记前言一、Verilog语言相关二、Verilog基本结构三、Verilog变量定义四、Verilog中的逻辑运算五、Verilog的逻辑描述方式1 组合逻辑:2 时序逻辑:六、硬件常用的缓存FIFO总结 前言 因为参与的新项目需要用fpga,所以自己学了一下verilog语言。整理一些比较基础的内容。 一、Verilog语言相关 Verilog是一种硬件描述语言,与C语言不同,Verilog通常操作的对象是数字硬件系统,Verilog可以表示逻辑电

bjwhile的博客 2130

ChatUI vs Ant Design X 技术选型对比

维度ChatUI优势轻量级、易上手、完美兼容 Ant Design全能型框架、企业级扩展性、深度模型集成局限性功能单一、缺乏高级交互支持学习曲线陡峭、包体积较大最佳实践单独聊天窗口集成整体智能助手系统开发通过对比可见,ChatUI 适合快速实现基础对话功能,而Ant Design X 更适合构建复杂的 AI 驱动应用。实际选择时需结合项目规模、团队技术栈和对交互复杂度的需求综合评估。

四楼没电梯的专栏 2265

【Verilog HDL】FPGA-Verilog文件的基本结构

主要讲解Verilog文件的基本结构,包括模块定义、端口声明、内部资源声明和基础语法。文中使用案例代码为2-4译码器和二选一多路器。适合新手学习与入门。

m0_56262476的博客 3427

Qt基础之十九:进程与QProcess

进程就是一个程序的执行实例,也就是正在运行的程序。对操作系统来说,进程就是一个担当分配系统资源CPU时间、内存的实体。在Qt 中,我们使用QProcess来表示一个进程。这个类可以允许我们的应用程序启动一个新的外部程序,并且与这个程序进行通讯。当外部程序开始启动时,QProcess的状态为Starting;外部程序已经启动时,QProcess的状态为Running,并发送started()信号;当外部层序退出了,QProcess的状态为NotRunning(初始状态),并发送finished()信号。

草上爬的博客 1万+

Verilog学习笔记(二)--非RTL级的Verilog简介

文章目录前言一、UDP--用户自定义原语句二、UDP--用户自定义原语句2.读入数据总结 前言 本文是一个学习笔记。 一、UDP–用户自定义原语句 UPD的关键词有table,endtable,endtable,primitive(开始),endprimitive(结束),r,f,p,n。 UDP内电平/沿表示: 二、UDP–用户自定义原语句 UPD的关键词有table,endtable,endtable,primitive(开始),endprimitive(结束),r,f,p,n。 2.读入数据 代码如

weixin_41866783的博客 1725

PCL 读取和保存点云

PCL (Point Cloud Library) 是一个用于处理 3D 点云数据的开源库。在处理点云数据时,常见的任务包括点云的读写和可视化。PCL 提供了强大的 IO 模块来读取和写入各种格式的点云文件,并且提供了可视化模块来对点云进行渲染和显示。点云的读写与显示是很多 3D 数据处理任务的基础步骤,通过这些步骤,可以对点云进行预处理、分析和操作。

纵马踏花向自由 1739

飞牛 NAS 部署 Hermes Agent 全指南:打造 24 小时在线、自我进化的 AI 智能体!

当大多数人还在把 AI 当聊天机器人使用时,我已经把它部署到了家里的飞牛 NAS 上,让它 24 小时在线工作、记忆我的习惯、自动执行任务,甚至还能不断学习新的技能。今天带你从零搭建这个真正属于自己的 AI Agent。🚀

XiaoqiangClub的博客 1227

【Verilog】基本逻辑门代码(二)

与门 //与门设计 module and_gate( A, B, Y ); input A; input B; output Y; assign Y = A & B; endmodule module test( ); reg aa; reg bb; wire yy; and_gate f(.A(aa),.B(bb),.Y(yy)); initial begin // 按时间定义变量的值

清风微醺的博客 1万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Verilog HDL的程序结构及程序设计的基本要素

Verilog HDL的程序结构本文转自:IP与SOC设计首先我们不开始讲Verilog HDL的语法,我们从Verilog HDL的程序结构出发。相信大家都看过芯片吧,它有个名字,有个外...

HackEle的博客 1670

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

FPGA之道(32)Verilog基本程序框架

了解一下Verilog代码的基本程序框架,这样可以让我们先对Verilog程序设计有一个整体的概念把握,进而在后续的Verilog语法学习中做到有的放矢。阅读本节时请着眼于大体,而不要过分去苛求细节语法,细节的语法介绍将在后续的小节中慢慢展开。

Reborn Lee 3580

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Verilog笔记(二)程序框架

来自正点原子的学习笔记 我在学习的过程中会尽量把它和C语言进行比较,毕竟有较大的相似之处 Verilog程序框架1 Verilog注释2 Verilog关键字3 Verilog程序框架3.1 基本内容介绍3.2 模块讲解3.3 主要部分的表达三级目录 正文开始 1 Verilog注释 同C语言,有两种注释方式 方式一:以//开头,注释到本行结束 code balabala // 这里写注释! 方式二:以/* 开头,以*/ 结尾,中间都是注释语句 code bal

weixin_51944426的博客 843

Verilog HDL的程序结构及其描述

首先我们不开始讲Verilog HDL的语法,我们从Verilog HDL的程序结构出发。相信大家都看过芯片吧,它有个名字,有个外壳,外壳向外伸出有引脚(BGA封装的那种请不要乱搅和...),然后芯片它可以实现一定的功能。   Ok,知道这些之后,我们就来看看Verilog HDL的描述数字电路的程序结构吧。 在解释结构的时候,我拿芯片设计这个例子来打一个不恰当的比方。

liuchuanfeng776的博客 1460
上一篇: python 使用PIL工具包中的pytesseract函数识别英文字符
下一篇: Verilog学习笔记(三)变量与操作符
bjwhile
博客等级 码龄10年 23粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值