1. always@(敏感信号)和 always@(时钟信号的作用边沿)区别?

 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
always @( a or b or cin)
下载积分:2000
内容提示:always @( a or b or cin)
文档格式:PPT|
浏览次数:129|
上传日期: 05:26:19|
文档星级:
全文阅读已结束,如果下载本文需要使用
 2000 积分
下载此文档
该用户还上传了这些文档
always @( a or b or cin)
关注微信公众号没有更多推荐了,
不良信息举报
举报内容:
时序逻辑和组合逻辑的区别
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!当前位置: >>
第4节-verilog 基础三
Verilog 语言基础三1 1 行为建模? ? ? ? initial always task function2 initial语句语法 initial begin end ? initial 中的变量是reg型 ? initial 语句执行一次 ? 所有的initial 在0时刻并行执行 ? 不可综合,用于构造测试激励 ? 激励中可有多个initial3 ? E.g:复位信号建模 …reg rst_n; initial begin rst_n = 1’b1; #20; rst_n = 1’b0; #20; rst_n =1’b1; end4 always 语句always @ (敏感信号表) begin end ? 变量是reg型 ? 重复执行 ? 敏感信号表完整? ? ? ? 逻辑电路中的输入信号 敏感信号完整,多个之间使用or 连接 组合逻辑:所有右边表达式中的变量以及if或者case的条件 时序逻辑:时钟的边沿与复位信号的边沿的组合? ? ? ?多个always语句并行执行,与编写顺序无关 一个变量只能在一个always中赋值 建模组合逻辑时使用阻塞赋值 建模时序逻辑时使用非阻塞赋值5 always建模组合逻辑Eg1 always @(a or b or d or e) begin if(a & b) c =d; else c = end6 always建模组合逻辑(续)? No complete sensitive listE.g.2 always @(a or b or d ) begin if(a & b) c =d; 1:综合时出现警告 else 2:仿真出现错误 c = endWarning:Incomplete sensitivity list - assuming completeness7 always建模组合逻辑(续)Eg2 always @(a or b) begin if(a & b) c =1’b0; else c = end如何修改?8 always建模组合逻辑(续)Eg3 always (a or b) begin if(a & b) c =1’b0; else c = 1’b1; end语法错误9 always建模组合逻辑(续)? 不允许在多个always中对同一个变量赋值 E.g.4. always @(a or b ) begin if(a & b) c = 1'b0; Error:Only one always block may assign a given variable c else c= 1'b1; endalways @(d or e ) begin if(d & e) c = 1'b0; else c= 1'b1; end10 always建模时序逻辑? 时序逻辑的敏感信号表? 时钟边沿和复位信号边沿的组合 ? 同步复位? always @(posedege clk ) ? always@(negedge clk)? 异步复位? ? ? ? always@(posedge clk or posedge rst_n) always@(posedge clk or negedge rst_n) always@(negedge clk or posedge rst_n) always@(nedegde clk or negedge rst_n)? 使用非阻塞赋值11 always建模时序逻辑(续)? 建模D触发器reg a_a_reg 是一个真正 的寄存器always @(posedge clk or negedge rst_n) begin if(!rst_n) a_reg &= 1'b0; else a_reg &= end12 always建模时序逻辑(续)? 建模D触发器reg a_ always @(posedge clk or negedge rst_n) begin if(!rst_n) a_reg = 1'b0; else a_reg = end综合结果是正确的, 但可能产生竞争,导 致仿真不一致,不建 议 13 always建模时序逻辑(续)? 建模D触发器reg a_ always @(posedge clk) begin if(!rst_n) a_reg &= 1'b0; else a_reg &= end14 always建模时序逻辑(续)? 建模D触发器reg a_Erroralways @(posedge clk or rst_n) begin Can't mix posedge/negedge use with plain signal references if(!rst_n) a_reg &= 1'b0; else a_reg &= end15 always建模时序逻辑(续)? 建模D触发器reg a_ always @(posedge clk or negedge rst_n or a) begin Can't mix posedge/negedge use with plain signal references if(!rst_n) a_reg &= 1'b0; else a_reg &= endError16 always建模时序逻辑(续)? 建模D触发器reg a_Think Hardware !!always @(posedge clk or posedge rst_n) begin ? if(!rst_n) a_reg &= 1'b0; else a_reg &= Warning:Edge and condition mismatch endError:The logic for a_reg does not match a standard flip-flop17 always建模时序逻辑(续)? 建模D触发器 module dff (clk,rst_n,d,q ); input clk,rst_n,d; always @(posedge clk) begin if(!rst_n) q &= 1’b0; else q &= end endmodule 18 always建模时序逻辑(续)? 带load端的寄存器 module dff (clk,rst_n,load,data,d,q ); input clk,rst_n,d,load,load_ always @(posedge clk) begin if(!rst_n) q &= 1’b0; else if(load) q &= else q &= end endmodule19 always建模时序逻辑(续)? 支持同步置数计数器module counter_ten(counter,clk,rst_n); input clk,rst_n; output [0:3] reg [0:3] always @(posedge clk) begin if(!rst_n) counter &= 4'b0; else if(counter == 4'd10) counter &= 4'b0; else counter &= counter + 1'b1; end endmodule 20 always建模时序逻辑(续)? 时序逻辑中的if-else结构… reg a_ always @(posedge clk ) begin if(!rst_n) a_reg &= 1'b0; else if(load) a_reg &= end …Don’t need the redundant else21 总结? ? ? ? initial 语句构建测试程序,不可综合 always 语句建模组合逻辑和时序逻辑 always 语句建模不同逻辑时的敏感信号表 always 语句建模时的赋值方式22 Task 语句? 语法定义 task task_ procedural_statement endtask ? 描述共同执行的代码段,多用于写高级测试程序 ? 可以没有参数 ? 在module 中的变量为全局变量,直接使用 ? 允许时延控制 ? 不可综合23 Task 语句(续)? E.gtask branch_ input [0:31] begin if (ir[0:5] == 6’b010111 && ir[6:31] ==26’b0) branch = 1’b1; else branch = 1’b0; end endtask24 Task 语句(续)? Task 调用 task_id(exp1,exp2,exp3...); ? 调用时参数顺序匹配 ? 参数必须是寄存器型 ? 调用语句形成独立语句 e.g. reg [0:31] branch_gen ( instruction, b );25 Task 语句(续)E.gmodule demo_dec_ reg [15:0] mem[0:1023]; reg [9:0] reg [31:0] reg [15:0] always begin ir=mem[pc]; case(ir[15:13]) … 3’b111:multiply(acc,mem[ir[12:0]]); endcase #100 pc=pc+1; end26 Task 语句(续) inout [32:1] op_a; input [16:1] op_b; reg [32:1] shift_opa, reg [16:1] shift_ begin result=0; shift_opa=op_a; shift_opb=op_b; repeat(16) begin #100 if(shift_opb[1]) result=result+shift_ shift_opa=shift_opa&&1; shift_opb=shift_opb&&1; end op_a= end endtask endmodule27 Functionfunction [range] function_ procedural_statement endfunction ? 与任务一样,位于模块内部 ? 任务可以无输入变量和I/O变量,而函数只能有输入变 量,且至少有一个输入 ? 只能返回一个值 ? 更接近C语言的函数意义28 Function(续)? 不能出现任何类型的定时控制描述,也不允许有wait语 句和disable语句 ? 可调用其它函数,但不能调用任务 ? 函数名隐含的是其返回值 ? 可以出现在连续赋值语句的右端表达式中 ? 主要用于高级建模29 Function(续)e.g.1 function [0:2] input [0:1] input [0:1] sum = a +b; endfunction30 Function(续)? 函数调用? Func_id(expr1,expr2,…,exprN)? 参数必须是寄存器型 ? 顺序一致 ? 函数调用是表达式的一部分。 e.g. ... reg [0:1] a,b; reg [0:2] sum_ sum_ab = sum(a,b); 31 2 关键的系统任务和系统函数? ? ? ? ? ? ? 显示任务(display task) 文件输入/输出任务(file I/O task) 时间标度任务(timescale task) 模拟控制任务(simulation control task) 时序验证任务(timing check task) 实数变化函数(conversion functions for real) 概率分布函数(probabilistic distribution function)32 1.显示任务: $display $write ? 和c中的printf一样。33 ? 2 探测任务 $strobe ? 与$display的区别34 E.g. `timescale 1ns/100ps module test2; reg [0:1] initial begin a = 2'b0; $strobe(&%d&,a); a = 2'b11; a = 2'b10; #1; $strobe(&%d&,a); a = 2'b11; a = 2'b01; end endmoduleWhat display:35 3 系统监控任务$monitor(p1,p2,pn) e.g.1initial begin a = 5'd10; $display (“ %d&,a); $monitor($time,“ %d&,a); #5; a= 5'd12; #10; a= 5'd13; endWhat will display?36 4 仿真控制任务 $ ? 退出仿真器 $ ? 暂停当前的仿真37 5随机函数 $random ? $random % ? {$random }%38 6 初始化memory $readmemb,$readmemh e.g1 reg [0:15] ram1 [0:1024]; initial $readmemh(“mem.dat”,ram1);39 ? 7 系统时间 $time40
Verilog语法入门,初学者必看_计算机软件及应用_IT/计算机_专业资料。verilog语法基础,初学者必看,包括词法约定 数据结构 门级建模Verilog 的词法约定 1 2 3 4 5...Verilog基础_信息与通信_工程科技_专业资料。Verilog 基础一基本要素 (1)Verilog...4.`include,包含源文件,可以嵌套,如果文件 1 包含文件 2,文件 2 包含文件 3...语言基础知识 Verilog HDL 语言基础知识先来看两个 Verilog HDL 程序。 例 6....模块中的第 2、第 3 行说 明接口的信号流向,第 4 行说明了模块的逻辑功能...Verilog语言基础教程_计算机硬件及网络_IT/计算机_专业资料。Verilog最基本知识详解...当 EN 在第 5 ns 变化时,语句 3、4、5 和 6 执行。这是因为 EN 是...实验三一、实验内容用 Verilog HDL 语言编写二分频器电路模板,四分频器电路模块...通过编写二分频电路的基础。把二分频电路再进行二分频。使之得到 八分频电路。...Verilog HDL 中内置了 26 个基本的元件,其中门级元件有 12 个(摘自王金明的...[2]); coi3,coi4,sum[3]); coi4,coi5,sum[4]); coi5,coi6,sum[5...[基础知识]Verilog100个值得注意的地方_互联网_IT/计算机_专业资料。Verilog100...4'h2: sm_dbr &= seg2; 4'h3: sm_dbr &= seg3; 4'h4: sm_dbr &...掌握通用寄存器等常用基本数字模块的 VERILOG 描述和基本设计方法 3、 理解带使能...4、 掌握使用 VERILOG 设计和验证带使能控制和异步清零的 8 位寄存器的方法 5...四、VerilogHDL 语言编程题(1、2 小题 10 分,3 小题 20 分) 要求:写清分析设计步骤 和注释。 1. 试用 Verilog HDL 描述一个带进位输入、输出的 8 位全...基本电路设计指导书 绝密 请输入文档编号 3.2.2伪随机序列发生器的硬件实现 3.2.3 8位伪随机序列发生器的 Verilog HDL编码 3.3双端口 RAM仿真模型 3.4同步...
All rights reserved Powered by
www.tceic.com
copyright &copyright 。文档资料库内容来自网络,如有侵犯请联系客服。Always过程块语法 - 爬行FPGA - ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台
- Powered by X-Space
Always过程块语法
& 01:16:30 / 天气: 晴朗
/ 心情: 郁闷
/ 个人分类:
★Always过程块语法:
always过程块是由always过程语句和语句块组成的,语法格式如下:
always @ (敏感事件1 or 敏感事件2 or 敏感事件3…….)
&&& ★★ always后面的语句块,如果只有一个类型的语句,可以不加begin…end
例如:always@(posdege clk or negedge rstn)& begin ---------------只有一个语句,可以不要
&&&&&&&&& If(rstn)
&&&&&&&&&&&&&&&&&&&&&&&&&&& Q=4’d0;
&&&&&&&&& Else q=q+1;
&&&&& End&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ---------------只有一个语句,可以不要
★★& always的敏感列表
&&& 用always实现组合逻辑要将所有输入信号列入敏感列表
&&& 用always实现时序逻辑不一定要将所有输入信号列入敏感列表
★★& always@(*)的用法
如果在设计中不愿列举过多的敏感信号,在综合工具和仿真工具的支持下,也可以使用always@(*),此时综合或仿真工具会自动把always块中出现的敏感信号加入敏感信号列表。
★★& 在always块内被赋值的信号
在always块内部的每一个信号都必须定义成寄存器型!!!!
注意:是等号”=”左边的变量,而不是右边的表达式,右边的表达式可以是任何类型
★★& always块外被赋值的信号
l必须指定为wire类型
l如果是端口信号,那么默认的类型就是wire类型的,不需要另外指定。
★★& 同一个reg,多个always
对一个寄存器型(reg)和整型(integer)变量给定位的赋值只允许在一个always块内进行,如在另一always块也对其赋值,这是非法的。没有更多推荐了,
不良信息举报
举报内容:
verilog 里面,always和always@(*)有区别吗?
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!

我要回帖

更多关于 multisim时钟信号 的文章

 

随机推荐