verilog语言及程序设计.ppt

上传人:sh****n 文档编号:6441580 上传时间:2020-02-25 格式:PPT 页数:42 大小:258.50KB
返回 下载 相关 举报
verilog语言及程序设计.ppt_第1页
第1页 / 共42页
verilog语言及程序设计.ppt_第2页
第2页 / 共42页
verilog语言及程序设计.ppt_第3页
第3页 / 共42页
点击查看更多>>
资源描述
Verilog语言及程序设计 四川华迪信息技术有限公司Version1 1 阻塞语句在verilog中的应用 阻塞语句 顾名思义 即本条语句具有影响下一条语句的作用 如果该条语句没有执行完 那么下条语句不可能进入执行状态的阻塞语句最能体现verilogHDL和C语言之间的血缘关系 比如 在时钟沿触发的always进程里 若先执行b c 再执行a b 那么本质上 在一个时钟沿触发里面 a c成立 即是说 不要b变量 直接在进程里赋值a c 结果是一样的 这和c语言中b c a b性质相同 非阻塞语句在verilog中的应用 非阻塞语句 顾名思义 本条语句不影响下一条语句的作用 更能体现硬件电路的特点 这正是非阻塞语句广泛应用于时序逻辑电路的原因 如果在一个时钟沿触发的always进程里面 b c a b那么就不可能直接在进程里面赋值a c 因为c的值要经过两个时钟延迟才传到a里面 如果c为1 b为0 a为1的话 那么在在非阻塞语句的进程里面 第一个时钟沿到来 a为0 第二个时钟沿到来 a为1 注 在一次触发进程里 无论是阻塞和非阻塞语句 每条语句只能执行一次 阻塞语句与非阻塞语句使用注意事项 阻塞语句是顺序执行的 而非阻塞语句是同时执行的大体原则 阻塞语句运用于组合逻辑电路设计 非阻塞语句运用于时序逻辑电路设计不要在同一个always块里面混合使用 阻塞赋值 和 非阻塞赋值 Verilog的特点 Verilog易学易用 与C语言相似 功能强大 使用广泛 可以在不同层次描述数字系统开关级描述寄存器传输级描述门级描述基本设计单元是 模块 block 包括 接口描述逻辑功能描述 VerilogHDL程序基本结构 Verilog的基本设计单元是 模块 BLOCK 模块由两部分组成 一部分描述接口 另一部分描述逻辑功能 按照模块接口的描述 一个模块可以在另一个模块中使用 逻辑功能的描述可以使用连续赋值语句 描述数据流行为 过程结构 时序行为 开关级原语 门级原语和用户定义的原语等方式 模块的基本结构 Module 端口说明 input out inout 参数定义数据类型定义连续赋值语句 assign 过程块 initial和always 行为描述语句低层模块实例任务和函数延时说明块endmodule 模块的基本结构说明 是模块惟一的标识符 是由模块的输入 输出和双向端口组成的端口列表 这些列表用来与其他模块进行连接 数据类型定义部分用来指定模块内所用的数据对象为寄存器型 存储器型或连线型 过程块包括initial过程块和always过程块两种 行为描述语句只能出现在这两种过程块中 延时说明块用来对模块各个输入和输出端口间的路径延时进行说明 模块调用 调用模块实例的一般格式 VerilogHDL程序是由模块组成的 每个模块的内容都包含在 Module 和 endmodule 之间 每个模块都要进行端口定义 说明输入 输出端口 模块的描述方式 VerilogHDL模块代表硬件上的逻辑实体 其范围可以从简单的门到整个电路系统 模块可以根据所采用的不同描述方式而分为行为描述和结构描述两类 也可采用两种方式的组合 Verilog语言要素 标识符 identifier 用来表示各种变量 参数或构件的名称 可以是任意一组字母 数字 符号和 下划线 符号的组合 但第一个字符必须是字母或下划线 区分大小写转义标识符可以在一条标识符中包含任何可打印字符 转义标识符以 反斜杠 符号开头 以空白结尾 空白可以是一个空格 一个制表符或换行符 Verilog语言要素 关键字VerilogHDL定义了一系列保留字 关键字 在编写VerilogHDL程序时 变量的定义不要与关键字冲突 注意只有小写的关键字才是保留字 注释在VerilogHDL里有两种形式的注释 是单行注释 是多行注释 格式 VerilogHDL区分大小写 即大小写的标识符是不同的 源程序书写格式自由 可跨越多行编写 也可在一行内编写 系统任务和函数 以字符开始的标识符表示系统任务或系统函数 任务提供了一种封装行为的机制 这种机制 可以在设计的不同部分被调用 任务可以返回0个或多个值 函数除只能返回一个值以外与任务相同 函数在0时刻执行 即不允许延迟 而任务可以带有延迟 常见系统任务和函数 显示任务 display write strobe monitor monitoron monitoroff模拟控制任务 finish stop模拟时间函数 time stime realtime 常用任务和函数 概率分布函数 ramdom seed 其它 setup hold setuphold width period skew recovery nochange rtoi itor realtobits bitstoreal printtimescale timeformat等 编译指令 以 反引号 开始的某些标识符是编译器指令 在Verilog语言编译时 特定的编译器指令在整个编译过程中有效 编译过程可跨越多个文件 直到遇到其他不同的编译程序指令 一些编译指令 define undef ifdef else endif default nettype include resetall timescale 值集合 VerilogHDL有四种基本的值0 逻辑0或 假 1 逻辑1或 真 x 未知 z 高阻 说明 在门的输入或一个表达式中为 z 的值通常解释成 x 此外x和z是不区分大小写的 下划线符号 可以随意用在整数或实数中 它们就数量本身没有意义 仅用以提高可读性 唯一的限制是下划线不能用做首字符 常量 整型十进制数格式 如100基数表示法 如4 b1101实数型十进制计数法科学计数法字符串型双引号内的字符序列 不能分成多行书写 参数 参数是一个常量 经常用于定义时延和变量的宽度 使用参数说明的参数只被赋值一次 参数说明形式如下 见P233 参数值也可以在编译时被改变 改变参数值可以使用参数定义语句或通过在模块初始化语句中定义参数值 数据类型 VerilogHDL有两大类数据类型线网表示结构化元件间的物理连线有wire tri wor trior wand triand trireg tri1 tri0 supply0 supply1等类型 寄存器表示一个抽象的数据存储单元有reg integer time real realtime等类型 表达式中的运算符 1 算术运算符 2 位运算符 3 逻辑运算符 4 关系运算符 7 连接和复制运算 8 归约运算符 9 条件运算符 10 优先级别 见P237表11 6 内置基本门 1 多输入门and nand or nor xor xnor 2 多输出门buf not 3 三态门bufif0 bufif1 notif0 notif1 4 上拉 下拉电阻pullup pulldown 5 MOS开关cmos nmos pmos rcmos rnmos rpmos 6 双向开关tran tranif0 tranif1 rtran rtranif0 rtranif1 连续赋值语句 连续赋值语句用于数据流行为建模 适用于组合逻辑电路 主要用于对线网wire类型变量的赋值 语法格式assign 驱动强度 时延值 线网标识符 表达式 连续赋值语句 连续赋值语句没有保持的概念 只要右端表达式中操作数的值发生变化 表达式即被重新计算 如果结果值有变化 新结果就赋给左边的线网 连续赋值语句之间是并发的 与书写的先后顺序无关 行为建模语句 行为建模有以下内容 过程结构时序控制语句块过程性赋值条件语句循环语句 过程结构 以下两种语句是为一个设计的行为建模的主要机制initial语句always语句一个模块中可以包含任意多个initial或always语句所有的initial和always语句在0时刻开始并行执行 时序控制 时延控制表示在语句执行前的 等待时延 使用格式有两种 时延值 最小时延 典型时延 最大时延 例 3c a 事件控制 边沿触发事件控制主要有正边沿 posedge 和负边沿 negedge 两种例 always posedgeclk count count 1 电平敏感事件控制进程语句或进程中的过程语句一直延迟到列出的控制信号有变化才执行例 always aorb c a b 语句块 顺序语句块格式 begin 标识符 语句1 语句n end其中 标识符 是可选项语句块中的语句按给定次序顺序执行并行语句块格式 fork 标识符 语句1 语句n join其中 标识符 是可选项语句块中的语句并行执行 过程性赋值 它是在initial语句或always语句内的赋值 只能对寄存器数据类型的变量赋值阻塞性赋值 阻塞性赋值是指立即赋值非阻塞性赋值 非阻塞性赋值是在语句块结束后 块内的非阻塞性赋值语句同时进行赋值 if条件语句 if条件语句3种格式if 表达式 语句 if 表达式 语句1 else语句2 if 表达式1 语句1 elseif 表达式2 语句2 elseif 表达式n 语句n else语句n 1 Case条件语句 语法格式 case 控制表达式 分支表达式1 语句1 分支表达式2 语句2 分支表达式n 语句n default 语句n 1 Endcasecase可以换为casex或casez 这三者使用形式上一样 但功能上有所差别 case casez和casex的差别 case casez和casex的差别 case casez和casex的差别 case casez和casex的差别 从表中可以看出三者差别如下 case是将所有逻辑值进行比较 casez则将高阻情况z情况忽略 casex则进一步将高阻z和未定x均忽略不计 循环语句 Forever语法格式 forever语句功能 将语句永远执行下去 主要用于产生时钟变量等Repeat语法格式 repeat 循环次数表达式 语句功能 执行指定循环次数 循环语句 While语法格式 while 条件表达式 语句功能 执行过程赋值语句直到指定的条件为假For语法格式 for 循环下标初值 循环条件 循环下标增量 过程语句功能 按照指定的次数重复执行过程赋值语句若干次 华迪电子实训中心2006 10 谢谢
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!