verilog语法结构

数据流描述方式:

用数据流描述对一个设计建模的最基本方式是连续赋值语句。连续赋值语法assign [delay] LHS_net = RHS_ expression

‘timescale 1ns/1ns

module Decoder2_4(A,B,EN,Z);

input A,B,EN;

output [0:3] Z;

wire Abar,Bbar;                                   //线网类型定义两个连线型变量

assign #1 Abar = A~;

assign #1 Bbar = B~;

assign #2 Z[0] = (Abar&Bbar&EN);

assign #2 Z[1] = (B&Abar&EN);

assign #2 Z[2] = (A&Bbar&EN);

assign #2 Z[3] = (A&B&EN);

连续赋值语句是对电路的数据流行为建模的,连续赋值语句是并发执行的,不是顺序执行的。

行为描述方式:行为功能使用过程语句结构描述

1.initial语句:只执行一次

2.always语句:循环执行,此语句重复执行。

只有寄存器类型数据能够在initial和always中被赋值。寄存器类型数据在被赋新值前保持原有值不变所有初始化语句和always语句都在0时刻并发执行。

对1位全加器电路建模:

module FA_Seq(A,B,Cin,Sum,Cout);

input A,B,Cin;

output Sum,Cout;

reg Sum,Cout;

reg T1,T2,T3;

always

@(A or B or Cin) begin

Sum = (A ^ B) ^Cin;

T1  = (A & Cin);

T2  = (B & Cin);

T3  = (A & B);

Cout = (A | B) | C;

end

endmodule

reg Sum,Cout,T1,T2,T3;在always语句被赋值说明为reg类型,@(A or B or Cin)表示只要A,B,或者Cin只要有一个发生就执行。

在always顺序执行的过程中,过程赋值可以有一个可选的时延。

语句间时延: Sum = (A ^ B) ^ Cin;    #4 T1 = A & Cin;

语句内时延:Sum = #3(A^B)^Cin;

initial语句:

‘timescale 1ns/1ns

module Test(Pop,Pid);

output Pop,Pid;

reg Pop,Pid;

initial

begin

Pop = 0;

Pid  = 0;

Pop = #2 5;

Pid  = #3 5;

end

endmodule

这个代码是测试代码,initial语句可用于测试时初始化值。

结构化描述形式:

1) 内置门原语(在门级); 2) 开关级原语(在晶体管级); 3) 用户定义的原语(在门级); 4) 模块实例 (创建层次结构)通过线网来相互连接

使用内置门原语描述的全加器电路实例

module FA_Str( A,B,Cin,Cout,Sum);

input A,B,Cin;

output Cout,Sum;

wire S1,T1,T2,T3;

xor

X1(S1 ,A ,B),

X2(Sum ,S1 ,Cin);

and

A1(T3 ,A ,B),

A2(T2 ,B ,Cin),

A3(T1 ,A ,Cin),

or

01(Cout ,T1 ,T2 ,T3);

endmodule

混合结构描述:

使用多种的上述描述方式对电路结构进行描述

原文地址:https://www.cnblogs.com/1mpanda/p/8295804.html

时间: 2024-10-10 10:00:00

verilog语法结构的相关文章

foreach ()语法结构提供了遍历数组的简单方式

foreach 语法结构提供了遍历数组的简单方式.foreach 仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息.有两种语法: foreach (array_expression as $value) statement foreach (array_expression as $key => $value) statement 第一种格式遍历给定的 array_expression 数组.每次循环中,当前单元的值被赋给 $value 并且数组内部的指

SQL SERVER 2012 第四章 连接 JOIN语句的早期语法结构 & 联合UNION

1/内部连接的早期语法结构 INNER JOIN SELECT * FROM Person.Person JOIN HumanResources.Employee ON Person.Person.ID = HumanResources.Employee.ID 等价于早期的也就是老版本的 SELECT * FROM Person.Person,HumanResources.Employee WHERE Person.Person.ID = HumanResources.Employee.ID 2

PHP 数组遍历 foreach 语法结构

foreach 语法结构用于遍历数组. foreach() PHP foreach() 语法结构用于遍历操作或输出数组,foreach() 仅能用于遍历数组或对象,当试图将其用于其它数据类型或者一个未初始化的变量时会产生错误. 语法: foreach (array as $value) statement // 或者: foreach (array as $key => $value) statement 上述语法中,每次循环将当前单元的值赋给 $value 并且数组内部的指针向前移一步.在第二

Bash编程语法结构第二节

Bash编程语法结构 一.for结构 其中 $var 是循环控制变量,[list] 是 $var 需要遍历的一个集合, do/done 对包含了循环体,相当于 C 语言中的一对大括号.另外如果 do 和 for 被写在同一行,必须在 do 前面加上 ";".如: for $var in [list]; do .下面是一个运用 for 进行循环的例子: 二.while适用于循环次数未知,或不便用for直接生成较大的列表时: while 测试条件; do 循环体 done 测试条件为真,进

多媒体开发之---h264 NALU 语法结构

补充笔记: 关于VCL:VCL层是指视频编码层,VCL NAL 单元是指那些nal_unit_type 值等于 1 到 5(包括 1 和 5)的 NAL 单元,这些单元都包含了视频数据.所有其他的 NAL 单元都称作非 VCL NAL 单元,PPS和SPS都是非VCLNAL单元.关于字节流NAL单元的格式:(起始码中0的长度)除了流开头的字节流NAL单元,大多字节流NAL单元的开头没有leading_zero_8bits (一个字节的0); nal_unit_type等于7(SPS)或8(PPS

黑马程序员——Java基础语法(二)语法结构

-----------android培训.java培训.java学习型技术博客.期待与您交流!------------ Java 中的语法结构有四种 顺序结构:顾名思义,就是按照顺序执行语句 判断结构:if  switch 选择结构: 循环结构:for  while   do while 1. if 结构 if语句有三种结构. (1)if(条件表达式){执行语句;} (2)if(条件表达式){执行语句;} else{执行语句;} (3)if(条件表达式){执行语句;} else if(条件表达式

前端-CSS-初探-注释-语法结构-引入方式-选择器-选择器优先级-01(待完善)

目录 CSS(Cascading Style Sheet) CSS注释 CSS语法结构 CSS的三种引入方式 选择器 伪类.伪元素选择器速查 CSS选择器优先级***** 选择器相同的情况下 选择器不同的情况下 选择器权重 样式调整技巧 本篇博客绝大多数内容来源网上,感谢作者的无私分享~ CSS(Cascading Style Sheet) 用来调节标签样式的,又称层叠样式表 CSS注释 /* 单行注释 */ /* 多行注释 */ 经典写法 /* 这是购物车页面的样式表(一般放css文件的第一行

ajax语法结构

ajax语法结构 特点: ajax(******) 异步提交 同步异步:描述的任务的提交方式 同步:提交任务之后 原地等待任务的返回结果 期间不干任何事儿 异步:提交任务之后 不愿地等待 直接执行下一行代码 任务的返回通过回调机制 阻塞非阻塞:程序的运行状态 程序运行的三状态图 局部刷新 一个页面 不是整体刷新 而是页面的某个地方局部刷新 Ajax是一门js的技术 基于原生js开发的,但是用原生的js写代码过于繁琐 我们在学的时候 只学如何用jQuery实现ajax AJAX 最大的优点是在不重

Oracle 中的基础的一些语法结构

方括号里的内容为可选项 大括号是必填 1PL/SQL结构块 DECLARE /* * 声明部分——定义常量.变量.复杂数据类型.游标.用户自定义异常 */ BEGIN /* * 执行部分——PL/SQL语句和SQL语句 */ EXCEPTION /* * 异常处理部分——处理运行异常 */ END; /*块结束标记 */ 2 创建序列 1 CREATE SEQUENCE [ schema. ] sequence_name 2 [ { INCREMENT BY | START WITH } int