当前位置: 首页 > news >正文

建设网站的那个公司好网站建设万首先金手指12

建设网站的那个公司好,网站建设万首先金手指12,wordpress协同插件,云南省建设厅网站目录 行为描述方法 语句块 过程赋值语句 高级程序语句 循环语句 数据流描述 结构描述 混合描述方法 module 模块名(端口列表); // 模块声明// 端口定义input [数据类型] [位宽] 输入端口列表; output [数据类型] [位宽] 输出端口列表; inout [数据类…目录 行为描述方法 语句块 过程赋值语句 高级程序语句 循环语句 数据流描述 结构描述 混合描述方法 module 模块名(端口列表); // 模块声明// 端口定义input [数据类型] [位宽] 输入端口列表; output [数据类型] [位宽] 输出端口列表; inout [数据类型] [位宽] 双向端口列表; // 数据类型定义wire [位宽] 线网名,线网名…; reg [位宽] 变量名,变量名…;//函数与任务声明function [位宽] 函数名; ...; endfuctiontask 任务名; ...; endtask// 功能描述 assign 线网名函数表达式; // 数据流描述方式always/initial过程语句; // 行为描述方式例化模块名 实例名(端口关联列表); // 结构描述方式endmodule行为描述方法 行为描述Behavioral Modeling以过程语句为基本单位在过程体内部应用高级语句和操作符描述模块的行为特性不考虑具体的实现方法。过程语句有initial语句和always语句两种形式。 initial过程语句称为初始化语句无触发条件从0时刻开始只执行一次。initial语句用在testbench文件中用于对变量进行初始化或者产生特定的信号波形。 initial语句的语法格式为 initial begin块内变量说明;[延时控制1] 语句1; ...end initial beginclk 0#10 clk 1;#20 clk 0; end当模块中存在多个的initial语句时则所有initial语句同时从0时刻开始执行。 always 语句 always语句有两种过程状态等待状态和执行状态。当事件列表中无事件发生时always语句处于等待状态当事件列表中有事件发生时always语句进入执行状态执行完毕后自动返回等待状态。 always语句应用的语法格式为always 事件列表begin [:语句块名]块内变量说明;[延时控制1] 语句1; …… [延时控制n] 语句n; end事件列表示触发启动always过程语句执行的条件分为电平敏感事件和边沿触发事件两种类型。 电平敏感事件是指线网/变量的电平发生变化时触发过程语句进入执行状态。 其语法格式为 电平敏感量1 or … or 电平敏感量n 语句块 always (*) begin……end边沿触发事件是指线网/变量发生边沿跳变时执行语句块分为上升沿触发和下降沿触发两种分别用关键词posedge和negedge表示。 边沿触发事件的语法格式为      边沿触发事件1 or … or 边沿触发事件n 语句块; D触发器的描述。module d_ff(clk,d,q);input clk,d;output reg q;always ( posedge clk ) // 上升沿锁存数据q d;endmodule 4位二进制计数器的描述。module cnt4b(clk,q);parameter Nbits 4;input clk;output reg [Nbits-1:0] q;// 下降沿计数always ( negedge clk ) q q 1b1;endmodulealways过程语句也可以没有触发条件表示永远反复执行用来产生周期性的波形但不可综合只能用于测试平台文件中。 需要强调的是在always语句的事件列表中电平敏感事件和边沿触发事件不能混合使用。一旦事件列表中含有由posedge或者negedge引导的边沿触发事件则不能再出现电平敏感事件即下述形式是错误的 always ( posedge clk or rst_n) always ( posedge clk or negedge rst_n)if ( !rst_n ) ...else ...过程语句应用示例。module clk_gen(clk1,clk2);output clk1,clk2;reg clk1,clk2;initial // 定义初值beginclk1 0;clk2 0;endalways // 产生周期性波形#50 clk1 ~clk1;always#100 clk2 ~clk2;endmodule语句块 语句块block是将两条或者两条以上的语句组合在一起使其在形式上如同一条语句其作用与C语言中的大括号“”相同。  语句块有顺序语句块和并行语句块两种类型。 顺序语句块sequential block由关键词begin和end定义按语句的书写顺序执行块中的语句即前一条语句执行完后才能执行后一条语句。若使用延迟则每条语句的延迟时间均相对于上一条语句的执行时刻而言。 顺序语句块定义的语法格式为begin [:块名]语句1;...语句n;end 其中块名可以省略。reg a,b,c,d; initial begina 1b0; // 仿真时刻0时执行#5 b 1b1; // 仿真时刻5时执行#10 c 1b0; // 仿真时刻15105时执行#15 d 1b1; // 仿真时刻3015105时执行end并行语句块parallel block由关键词fork和join定义块中的所有语句从块被调用的时刻同时开始执行。若使用延迟则每条语句的延迟时间均相对于块调用的开始时刻而言与语句的具体书写顺序无关。 reg a,b,c,d; initial forka 1b0; // 仿真时刻0时执行#5 b 1b1; // 仿真时刻5时执行#10 c 1b0; // 仿真时刻10时执行#15 d 1b1; // 仿真时刻15时执行join时序控制 时序控制用于定义从开始遇到语句到真正执行该语句时的等待时间。时序控制只用于仿真综合时所有的延时控制将被忽略。 时序控制有常规延时和内嵌延时两种书写形式。 应用常规延时的语法格式为     [#延时量] 线网/变量 表达式; 应用内嵌延时的语法格式为     线网/变量 [#延时量] 表达式; 在Verilog HDL中延迟量的单位由预编译指令“timescale”进行定义。例如在文件头中添加语句      timescale 1ns /1ps 表示仿真时间单位为1ns仿真精度为1ps。根据该命令仿真工具才认为 #10 表示延时时间为10ns。 过程赋值语句 过程赋值procedural assignment语句是指在initial/always语句内部对变量进行赋值的赋值语句。 过程赋值语句的语法格式为    变量 赋值操作符 赋值表达式 ; 赋值操作符分为两类“”和“”分别表示阻塞赋值blocking assignment和非阻塞赋值non-blocking assignment。 阻塞赋值按照语句的书写顺序进行赋值。也就是说在前一条赋值语句执行结束之前后一条语句被阻塞不能执行。只有前一条赋值语句执行结束后后一条语句才能被执行。 module eq1b(a,b,eq);input a,b;output reg eq;reg tmp1,tmp2;always (a,b)begintmp1 ~a ~b;tmp2 a b;eq tmp1 | tmp2;end endmodule非阻塞赋值是指多条赋值语句同时赋值与语句的书写顺序无关即后面赋值语句的执行不受前面赋值语句的影响。  由于阻塞赋值与非阻塞赋值的赋值方法不同因此综合出的电路存在差异所以必须正确地区分和应用这两类赋值语句。 module blocking(din,clk,reg1,reg2);input din,clk;output reg reg1,reg2;always (posedge clk)beginreg1 din;reg2 reg1;endendmodule当模块中既包含组合逻辑又包含时序逻辑时应该将组合逻辑和时序逻辑分开进行描述。可以用一个always语句描述时序逻辑用另一个always语句描述组合逻辑或者改用连续赋值语句描述组合逻辑。 module blocking(din,clk,reg1,reg2);input din,clk;output reg reg1,reg2;always (posedge clk)beginreg1 din;reg2 reg1;endendmodule高级程序语句 Verilog HDL中的高级程序语句和C语言一样用于控制代码的流向分为条件语句、分支语句和循环语句三种类型。 条件语句conditional statement使用关键词if和else根据条件表达式的真假确定执行的操作用于对赋值过程进行控制分为简单条件语句、分支条件语句和多重语句三种类型。 module d_latch(clk,d,q); input clk,d;output reg q;always (clk,d)if (clk) q d;endmodule由于简单条件语句没有定义条件表达式为假时执行的操作隐含条件表达式为假时不执行任何操作所以被赋值的变量应该保持不变因而会综合出时序电路。 分支条件语句的语法格式为   if条件表达式     条件表达式为真时执行的语句块;   else     条件表达式为假时执行的语句块; module mux2to1 (y,d0,d1,sel);input d0,d1,sel;output reg y;always (d0,d1,sel)beginif ( !sel ) y d0;elsey d1;endendmodule如果用下述代码描述双向口 module BiDir_Port(dir,a,b);input dir; // 双向控制端inout a,b; // 两个双向口reg atmp,btmp;assign aatmp;assign bbtmp;always (dir,a,b) if ( dir ) atmp b; else btmp a; endmodule描述双向口正确的Verilog代码参考如下 module BiDir_Port(dir,a,b);input dir; // 双向控制端inout a,b; // 两个双向口reg atmp,btmp;assign aatmp;assign bbtmp;always (dir,a,b) if (dir) begin atmp b; btmp 1’bz; endelse begin btmp a; atmp 1’bz; end endmodule具有异步复位功能的4位二进制计数器的描述 module cnt4b(clk,rst_n,q);input clk,rst_n;output [3:0] q;reg [3:0] q;always (posedge clk or negedge rst_n)beginif ( !rst_n ) // 低电平有效q 4b0000;elseq q 1b1;end endmodule多重条件语句常用于多路选择 其语法格式为 if条件表达式1 条件表达式1为真时执行的语句块;   else if条件表达式2   条件表达式2为真时执行的语句块;    ……     else if条件表达式n      条件表达式n为真时执行的语句块;     else      条件表达式1~n均为假时执行的语句块; 多重条件语句对条件表达式的判断有先后次序隐含有优先级的关系先判断的条件表达式优先级高后判断的条件表达式优先级低。因此多重条件语句通常用于描述有优先级的逻辑电路。 4线-2线优先编码器的描述。module prior_encoder(d,c,b,a,y);input d,c,b,a;output reg [1:0] y;always (d,c,b,a)beginif (d) y 2b11;else if (c) y 2b10;else if (b) y 2b01;else y 2b00;endendmodule 分支语句使用关键词case...endcase引导功能相当于C语言中的switch语句用于实现多路选择。 用分支语句描述2选一数据选择器。 module mux2to1(d0,d1,sel,y);input d0,d1,sel;output y;reg y;always (d0,d1,sel) case ( sel )1b0: y d0;1b1: y d1;default: y d0;endcaseendmodule在Verilog HDL中通常用字符“?”代替字符x和z表示无关位。 always (d,c,b,a)begincasez({d,c,b,a})4b1???: y 2b11;4b01??: y 2b10;4b001?: y 2b01;4b0001: y 2b00;default: y 2b00;endcaseendendmodule循环语句 循环语句的作用与C语言相同。Verilog HDL支持4类循环语句for、while、repeat和forever语句其中for语句、while语句的用法与C语言相同。 用移位累加方法描述乘法器。module multi(result,op_a,op_b);parameter Nbits8; // 参数定义input [Nbits:1] op_a,op_b; // 被乘数与乘数output [2*Nbits:1] result; // 乘法结果reg [2*Nbits:1] result;integer i; // 循环变量always (op_a, op_b)begin result 0;for(i1;iNbits;ii1)if(op_b[i]) result result(op_a(i-1)); endendmodule需要注意的是Verilog不支持i和i--这种循环增量的书写方式递加和递减只能写成ii1和ii-1。 while语句的语法格式为 while循环条件表达式   语句块; 如果while循环中条件表达式的值为x或者z时则循环次数为0。 parameter Nbits8; reg [2*Nbits:1] atmp; // 定义内部变量 reg [Nbits:1] btmp; integer i; // 定义循环变量 always (op_a,op_b)begin result 0;atmp {{Nbits{1b0}},op_a}; // 拼接扩展btmp op_b; i Nbits;while (i0) begin if ( btmp[1] ) result result atmp; i i-1; // 循环次数减1atmp atmp 1; // 左移一位 btmp btmp 1; // 右移一位end endrepeat语句的语法格式为   repeat循环次数表达式              语句块; parameter Nbits8; reg [2*Nbits:1] atmp; reg [Nbits:1] btmp; always (op_a,op_b)beginresult 0;atmp op_a;btmp op_b;repeat (Nbits) // 循环次数由Nbits确定begin if ( btmp[1] ) result result atmp;atmp atmp 1; btmp btmp 1;endend数据流描述 数据流描述Dataflow Modeling采用连续赋值语句基于表达式和操作符描述线网的功能用于组合逻辑电路的描述。连续赋值语句的语法格式为   assign [#延迟量] 线网名 赋值表达式; 用数据流描述2选一数据选择器。module MUX2to1(y,d0,d1,sel);input d0,d1,sel;output y;assign y ~sel d0 | sel d1; endmodule需要说明的是1连续赋值语句用于对线网进行赋值不能对变量进行赋值2连续赋值语句和过程语句为平等关系不能相互嵌套使用3连续赋值语句的执行顺序与语句书写的顺序无关。 结构描述 结构描述Structural Modeling方法类似于原理图设计是将电路中的基元、模块和功能IP之间的连接关系由连线转换为文字表达。 Verilog HDL预定义了26个基本元器件primitives简称基元包括逻辑门和三态门上拉电阻和下拉电阻以及MOS开关和双向开关。 Verilog基元分为以下六种类型 ▪ 多输入门and, nand, or, nor, xor, xnor ▪ 多输出门buf, not ▪ 三态门bufif0, bufif1, notif0, notif1 ▪ 上拉电阻/下拉电阻pullup, pulldown ▪ MOS开关cmos, nmos, pmos, rcmos, rnmos, rpmos ▪ 双向开关tran, tranif0, tranif1, rtran, rtranif0, rtranif1 结构描述的代码参考如下module mux2to1(y,a,b,sel);output y;input a,b,sel;wire sel_n,a1,b1;not G1 (sel_n,sel);and G2 (a1,a,sel_n);and G3 (b1,b,sel);or G4 (y,a1,b1);endmodule混合描述方法 Verilog HDL支持三种描述方式的混合使用即在同一模块中可以混合使用过程语句、连续赋值语句和例化语句。 全加器的混合描述。module Full_Adder(A,B,Cin,Sum,Co);input A,B,Cin;output Sum,Co;reg Co;wire Wtmp;xor U1(Wtmp,A,B); // 结构描述,实现WtmpA^Bassign Sum Wtmp ^ Cin; // 数据流描述,实现SumWtmp^Cinalways ( A or B or Cin ) // 行为描述Co A Cin | B Cin | A B; // 过程赋值语句endmodule
http://www.w-s-a.com/news/702225/

相关文章:

  • 广东民航机场建设有限公司网站网站开发后端用什么
  • 做风帆网站需要多少钱越野车网站模板
  • 如何做网站平台销售用狗做头像的网站
  • 宝安电子厂做网站美食网页设计的制作过程
  • 网站logo提交学网站开发技术
  • 跨境电商平台网站建设广州西安官网seo推广
  • 我和你99谁做的网站小程序制作第三方平台
  • 建设银行网站用户名鹤岗网站seo
  • 做一元夺宝网站需要什么条件西安市做网站的公司
  • 零基础建设网站教程郑州做网站推广价格
  • 平面设计免费素材网站新开三端互通传奇网站
  • ppt模板免费下载 素材医疗seo网站优化推广怎么样
  • 课程网站怎么做wordpress文章改背景色
  • 网络营销从网站建设开始卖汽车配件怎么做网站
  • 手机商城网站制作公司济南想建设网站
  • .net 建网站网站网站做员工犯法吗
  • 电子商务网站建设说课稿棕色网站设计
  • 怎么做律所的官方网站红塔网站制作
  • 装一网装修平台官网惠州seo按天付费
  • 湖南建设监理报名网站东莞模块网站建设方案
  • 网站建设小组个人主页html源码
  • 响应式网站检测工具营销公司业务范围
  • 网站源码如何安装做游戏课程网站
  • 选服务好的网站建设亚洲砖码砖专区2022
  • 网站快速查找wordpress 悬停 图片 文字
  • 网站续费 多久想自己做网站该学些什么
  • 可以自己做网站wordpress英文写作插件
  • 国外可以做会员网站的网站怎么查百度竞价关键词价格
  • 新站网站建设亚马逊关键词
  • 电商网站前端架构设计上海市建设工程安全生产协会网站