首页 > 其他分享 >组合电路的行为级建模

组合电路的行为级建模

时间:2023-07-05 18:55:43浏览次数:38  
标签:语句 begin end 组合 always 建模 电路 循环 表达式

主要使用关键词initial或always定义的两种结构类型的描述语句,initial主要用于面向仿真的过程语句,不能用来描述硬件逻辑电路的功能。

1.always结构型说明语句
用法:

always @(事件控制表达式)
	begin:块名
		块内局部变量的定义;
		一条或者多条过程赋值语句;
	end

不停的循环执行其内部的过程赋值语句,直到仿真过程结束。always语句主要对硬件电路的行为功能进行描述,也可以再测试模块中对时钟信号进行描述。

其中“事件控制表达式”又叫敏感事件表,只要里边的某一条件发生改变,则执行always语句,“过程赋值语句”的左值必须是reg(连续赋值语句assign左值必须是wire类型),右边没有要求。

begin与end包起来就是一个块,里边的语句按顺序执行,其实就相当于C语言的{} 。

在always与initial中定义新变量时,begin后必须要加冒号加块名,否则报错,不定义新变量加上块名也是好习惯。

例子:2线-4线译码器。

module Decoder2x4_gates(
    input [1:0]A, 
    input En, 
    output [3:0]Y);

    always @ (A or En) //input与output如果不声明就默认是wire。
	begin:Decoder
		Y[0] = ~(~A[1] & ~A[0] & En);
		Y[1] = ~(~A[1] & A[0] & En);
		Y[2] = ~(A[1] & ~A[0] & En);
		Y[3] = ~(A[1] & A[0] & En);
	end
endmodule

2.条件语句
其实与C语言用法一样,如果是多条语句就记得加begin,end,相当于C语言用{}包起来。

3.多路分支语句
case,但语法不同。
用法:

case(case_expr)
	item_expr1: statement1;
	item_expr2: statement2;
	......
	default:default_statement;
endcase

如果是多条语句,还是要加begin,end,如果判断到与某一分支值相同,那么case语句直接执行结束。

case还有两种变体,casez与casex,casez语句中,将z视为无关值,即如果比较双方有一方的有一位的值是z,那么该位不予考虑,比较结果永远为真;casex就是把z和x全视为无关值,都不考虑,比较结果永远为真。

5.循环语句
for、repeat、while和forever,里边可以包含延时控制。只能在initial或always内部使用。多条语句依然要使用begin与end包起来。
(1)for循环语句
用法:

for (表达式1;条件表达式2;表达式3) 语句块

与C语言类型,关于表达式3,verilog是没有自增自减运算符的,所以只能写i = i + 1或者i = i - 1之类的,但是SystemVerilog中支持了++与--。

图引用自什么场合下会用到systemverilog? - 路桑的回答 - 知乎
其实verilog与SystemVerilog就像是C与C++的区别,能被大多数综合综合语句支持,也能用于仿真测试,下边其他三条基本用于仿真测试了。
(2)while循环
与C语言相同,主要用于仿真测试。
(3)repeat循环语句
用法:

repeat(循环次数表达式)语句块

可以指定循环次数,如果循环次数表达式值不确定,按x与z处理,则循环次数按0处理,主要用于仿真测试。
(4)forever循环语句
无限循环,如果不使用某种形式的时序控制,就无限执行,后边的语句永远不会被执行。

initial
begin
	CP = 1'b1;
	#50 forever
	#25 CP=~CP;
end

上边例子的含义就是,CP在0时刻初始化为1,一直保持到第50个时间单位。然后以后每25个ns,CP反相一次,直到300ns,这个语句主要用于仿真测试。

标签:语句,begin,end,组合,always,建模,电路,循环,表达式
From: https://www.cnblogs.com/ZhengLijie/p/17529486.html

相关文章

  • 数据建模来拯救:弄清楚什麽功能优先级真正重要
     作为一个产品经理经常会遇到非常多的产品需求,开发同学忙的不可开交,用户又似乎什么都想要。开发产品资源有限,怎么才能捞出真正的用户需求?给真正重要的需求高优先级?产品经理决定引进「KANO模型」,进行系统的需求梳理,对需求进行分析和提炼,提高效率。对客户需求进行分类并将其......
  • java 组合>聚合>关联>依赖 的区别
    出处:https://zhuanlan.zhihu.com/p/359672087简单来讲,组合是一种较为紧密的关系,从生命周期上看,部分和整体是共存亡的关系。聚合则是一种较为松散的关系,部分和整体的生命周期未必一致。在实际代码中:组合关系中,部分的实例化在整体中进行。聚合关系中,部分的实例化过程在整体外进行,......
  • 组合框架:融合创新技术,实现一次编码多平台运行
    近年来,随着小程序技术及生态的发展,小程序应用已有超过App应用的势头。 根据Statista的数据,截至2021年底,全球移动应用商店上的应用数量约为6600万款。同期,据微信官方数据,截至2021年6月,微信小程序的月活跃用户超过13亿,并且在微信平台上有超过2000万个小程序。此外,除了微信小程......
  • yaml创建模型结构,代码阅读
    *前言.最近读到类似Detectron2结构的训练代码,实在是太痛苦了。因此,做笔记记录一下。1.整体结构:Trainingkit;      |----configs:存储各种网络的yaml配置文件;      |----docs        |----imxcv:运行代码的核心组件;......
  • ASL芯片CS5466方案设计|集睿致远CS5466代理商|Type-c转HDMI电路原理
    CS5466作为ASL集睿致远新推出的高性能Type-CtoHDMI2.1协议转换器,可以通过HDMI输出端口作为TMDS或FRL发射机进行操作。CS5466适配于多个配件市场和现实应用主板,例如:主板,显示端口,扩展坞等。CS5266还配备了最高级别的HDCP嵌入式秘钥,能够安全传输受保护的内容,作为集睿致远ASL的一......
  • Verilog HDL数据流建模与运算符
    数据流建模使用的连续赋值语句由关键词assign开始,一般用法如下:wire[位宽说明]变量名1,变量名2,...,变量名n;assign变量名=表达式;只要等号右边的值发生变化,则立即更新等号左边的值。注意,连续赋值语句只能对wire型变量进行赋值,所以等号左边必须是wire型。把2线-4线译......
  • 组合
    组合数默认会组合数基础内容,二项式定理广义组合数定义\[\binomnm=\frac{n^{\underlinem}}{m!}\]\[n^{\underlinem}=n\times(n-1)\times(n-2)\times...\times(n-m+1)\]组合数常用公式及证明这里的证明主要分为3种1.用组合意义证明2.用定义证明(拆成阶......
  • Verilog HDL门级建模
    VerilogHDL内部定义了12个基本门级元件可以直接用,用这些门级原件直接对逻辑图进行描述,称为门级建模。每个门输入可能是逻辑0,逻辑1,不确定态x和高阻态z四个值之一。多输入门主要有与门(and),与非门(nand),或门(or),或非门(nor),异或门(xor),同或门(xnor)。符号都知道,为了省事我选择直接拍照。......
  • 代码随想录算法训练营第二十一天| 216.组合总和III 17.电话号码的字母组合
    216.组合总和III  思路:很像上一个组合类型的题目,唯一不同的就是自己写一个sum代码:1voidconvertBST_cur(TreeNode*root,vector<TreeNode*>&nodes)2{3if(!root)return;4if(root->left)convertBST_cur(root->left,nodes);5nodes.push_bac......
  • Arrangement排列•Combination组合•Counting计数•Binomial Theorem二项式定理
    符号C-Combination组合数[1]A-Arrangement(旧教材为P-Permutation)N-Number元素的总个数(自然数集合).M-参与选择的元素个数(M不大于N,两者都是自然数集合).!-Factorial阶乘.Arrangement排列与Combination组合:注意:n,m都是自然数,且m<=n,下同.排列的定义:从n......