编写verilog测试代码编写代码以及tsetbench代码:含二选一多路选择器模块

海关图书总发行书店《各种Verilog设计全套资料汇编》
开&&&&&&本:页&&&&&&数:字&&&&&&数:I&&S&&B&&N:1售&&&&&&价:270.00元 品&&&&&&相:运&&&&&&费:卖家未设置运费,请确认配送方式与运费上书时间:购买数量:(库存10件)
微信购买商品分类:关 键 字:详细描述:此套资料包含书籍和光盘,一共2套内容,共计270元,包含运费&&详情请咨询客服人员&电话:010--第一套资料:《数字逻辑基础与Verilog设计(原书第2版)》《Verilog数字系统设计教程》出版社最新出版2种图书第二套资料:《各种Verilog设计全套资料汇编》光盘,包含以下目录所对应内容,几乎涵盖了所有这方面的内容,全部汇总在一起;图书介绍&目录如下:译者序译者简介序言前言作者简介第1章&设计概念&11.1&数字硬件&11.1.1&标准芯片&21.1.2&可编程逻辑器件&21.1.3&定制芯片&31.2&设计过程&31.3&数字硬件的设计&41.3.1&基本设计循环&51.3.2&计算机的结构&51.3.3&数字硬件单元的设计&61.4&本书中的逻辑电路设计&81.5&理论和实践&8参考文献&9第2章&逻辑电路入门&102.1&变量和函数&102.2&反相&122.3&真值表&122.4&逻辑门和逻辑网络&132.5&布尔代数&152.5.1&维恩图&182.5.2&符号和术语&202.5.3&运算的优先级别&202.6&用与门、或门和非门进行综合&212.7&与非以及或非逻辑网络&262.8&设计举例&292.8.1&三路灯光控制&292.8.2&多路选择器电路&302.9&计算机辅助设计工具简介&312.9.1&设计输入&322.9.2&综合&332.9.3&功能仿真&332.9.4&物理设计&332.9.5&时序仿真&342.9.6&芯片配置&342.10&Verilog&简介&352.10.1&逻辑电路的结构描述&352.10.2&逻辑电路的行为描述&372.10.3&编写Verilog代码必须注意的关键点&382.11&小结&392.12&问题求解举例&39练习题&42参考文献&45第3章&实现技术&463.1&晶体管开关&463.2&NMOS逻辑门&483.3&CMOS逻辑门&503.4&负逻辑系统&533.5&标准芯片&553.6&可编程逻辑器件&563.6.1&可编程逻辑阵列&573.6.2&可编程阵列逻辑&583.6.3&PLA和PAL的编程&603.6.4&复杂可编程逻辑器件&613.6.5&现场可编程门阵列&633.6.6&用CAD工具在CPLD&和FPGA上实现逻辑电路&663.6.7&CPLD和FPGA的应用&663.7&定制芯片、标准单元和门阵列&663.8&实际问题&683.8.1&MOSFET晶体管的制造和行为&683.8.2&MOSFET晶体管的导通电阻&713.8.3&逻辑门的电平&713.8.4&噪声容限&723.8.5&逻辑门的动态操作&733.8.6&逻辑门的功率消耗&753.8.7&通过晶体管开关传递1和0&763.8.8&逻辑门的扇入和扇出&773.9&传输门&813.9.1&异或门&813.9.2&多路选择器电路&823.10&SPLD、CPLD和&FPGA&的实现细节&823.11&小结&883.12&问题求解举例&88练习题&93参考文献&98第4章&逻辑函数的优化实现&994.1&卡诺图&994.2&最小化策略&&专业术语&&最小化步骤&1064.3&和之积形式的化简&1084.4&非完全指定函数&1094.5&多输出电路&1104.6&多级综合&&提取公因子&&函数分解&&多级与非以及或非电路&1194.7&多级电路的分析&1204.8&立方体表示法&1244.9&列表法化简&&质蕴涵项的产生&&最小覆盖的确定&&列表法小结&1314.10&使用立方体表示法最小化函数&&本质蕴涵项的确定&&求解最小覆盖的完整步骤&1354.11&一些实际问题的考虑&1374.12&由Verilog代码综合得到电路举例&1374.13&小结&1404.14&问题求解举例&140练习题&144参考文献&148第5章&数的表示和算术电路&1505.1&数位的表示法&&无符号整数&&十进制数与二进制数之间的转换&&八进制数和十六进制数的表示&1515.2&无符号数的加法&&全加器的分解&&行波进位加法器&&设计举例&1565.3&有符号数&&负数&&加法和减法&&加法器和减法器单元&&基数补码方案&&算术溢出&&电路的性能问题&1645.4&快速加法器&1655.5&使用CAD工具设计算术电路&&使用原理图编辑工具设计算术电路&&使用Verilog设计算术电路&&使用向量信号&&使用自动生成语句&&Verilog中的线网和变量&&算术赋值语句&&Verilog代码中数的表示&1785.6&乘法&&无符号数的阵列乘法器&&有符号数的乘法&1825.7&数的其他表示方法&&定点数&&浮点数&&二-十进制编码&1845.8&ASCII字符码&1865.9&问题求解举例&188练习题&191参考文献&193第6章&组合电路构件块&1946.1&多路选择器&&用多路选择器的逻辑函数的综合&&用香农展开的多路选择器综合&1986.2&译码器&2026.3&编码器&&二进制编码器&&优先级编码器&2066.4&码型转换器&2076.5&算术比较电路&2076.6&用Verilog表示组合电路&&条件操作符&&if-else&语句&&case&语句&&for&循环语句&&Verilog操作符&&生成结构&&任务和函数&2206.7&小结&2226.8&问题求解举例&223练习题&228参考文献&230第7章&触发器、寄存器、计数器和简单处理器&2327.1&基本锁存器&2337.2&门控SR锁存器&2347.3&门控D锁存器&2367.4&主从D触发器和沿触发的D触发器&&主从D触发器&&沿触发的D触发器&&有清零端和预置信号的D触发器&&触发器的时序参数&2427.5&T触发器&2437.6&JK触发器&2447.7&术语小结&2447.8&寄存器&&移位寄存器&&并行存取的移位寄存器&2467.9&计数器&&异步计数器&&同步计数器&&可并行置数的计数器&2517.10&同步复位&2527.11&其他类型的计数器&&BCD计数器&&环形计数器&&Johnson计数器&&计数器设计要点&2567.12&用CAD工具在设计中加入存储元件&&在电路原理图中添加存储元件&&用Verilog代码实现存储元件&&阻塞赋值和非阻塞赋值&&组合逻辑电路的非阻塞赋值&&具有清零功能的触发器&2617.13&用CAD工具在设计中加入寄存器和计数器&&在电路原理图中添加寄存器和计数器&&在Verilog代码中使用库模块&&在Verilog代码中使用寄存器和计数器结构&2647.14&设计举例&&总线结构&&简单的处理器&&反应计时器&&寄存器传输级代码&2867.15&触发器电路的时序分析&2867.16&小结&2887.17&问题求解举例&289练习题&292参考文献&296第8章&同步时序电路&2988.1&基本设计步骤&&状态图&&状态表&&状态分配&&触发器的选择以及下一个状态和输出表达式的推导&&时序图&&设计步骤小结&3038.2&状态分配问题&3068.3&米利型状态模型&3088.4&用CAD工具设计有限状态机&&摩尔型有限状态机的Verilog代码&&Verilog代码的综合&&电路的仿真和测试&&另一种风格的Verilog代码&&用CAD工具的设计步骤小结&&在Verilog代码中进行状态分配&&用Verilog语句来编写米利型有限状态机&3178.5&串行加法器举例&&用米利型有限状态机实现的串行加法器&&用摩尔型有限状态机实现的串行加法器&&串行加法器的Verilog&代码&3218.6&状态最小化&&划分最小化的步骤&&未完全指定的有限状态机&3288.7&用时序电路方法设计计数器&&模8计数器的状态图和状态表&&状态分配&&用D触发器实现的计数器&&用JK触发器实现的计数器&&举例:一个不同的计数器&3358.8&用作仲裁器电路的有限状态机&&仲裁器电路的实现&&有限状态机输出延迟的最小化&&小结&3408.9&同步时序电路的分析&3408.10&算法状态机图&3438.11&时序电路的形式化模型&3458.12&小结&3468.13&问题求解举例&346练习题&352参考文献&355第9章&异步时序电路&3569.1&异步行为&3569.2&异步电路分析&3589.3&异步电路综合&3639.4&状态化简&3729.5&状态分配&&转移图&&未指定的下一个状态项的利用&&使用附加状态变量进行的状态分配&&独热状态分配&3889.6&冒险&&静态冒险&&动态冒险&&冒险的意义&3949.7&一个完整的设计实例&3949.8&小结&3989.9&问题求解举例&399练习题&403参考文献&406第10章&数字系统设计&40710.1&构件块电路&&有使能输入的触发器和寄存器&&有使能输入的移位寄存器&&静态随机存取存储器&&可编程逻辑器件中的SRAM块&41010.2&设计举例&&位计数电路&&算法状态机图蕴涵的时序信息&&移位相加实现的乘法器&&除法器&&算术平均值&&排序操作&42810.3&时钟同步&&时钟偏差&&触发器的时序参数&&触发器的异步输入&&开关的抖动&43810.4&小结&439练习题&439参考文献&442第11章&逻辑电路测试&44311.1&故障模型&&固滞模型&&单个故障和多个故障&&CMOS电路&44411.2&测试集的复杂度&44411.3&路径的敏感化&44511.4&树状结构的电路&44811.5&随机测试&44811.6&时序电路的测试&45011.7&内建自测试&&内建逻辑块观察器&&签字分析&&边界扫描&45711.8&印制电路板&&印制电路板的测试&&测试仪器&46011.9&小结&460练习题&461参考文献&462第12章&计算机辅助设计工具&46412.1&综合&&网表的生成&&门的优化&&技术映象&46712.2&物理设计&&布局&&布线&&静态时序分析&47112.3&小结&472参考文献&472部分习题答案&474*附录A&Verilog参考资料附录B&辅导教材1—使用Quartus&II计算机辅助设计软件附录C&辅导教材2—用Altera器件实现电路附录D&辅导教材3—在FPGA中的物理实现附录E&商业器件Verilog数字系统设计教程(第2版)第一部分&Verilog数字设计基础第1章&Verilog的基本知识  1.1&硬件描述语言HDL  1.2&Verilog&HDL的历史1.2.1&什么是Verilog&HDL1.2.2&Verilog&HDL的产生及发展1.3&Verilog&HDL和&VHDL的比较  1.4&Verilog的应用情况和适用的设计  1.5&采用Verilog&HDL设计复杂数字电路的优点1.5.1&传统设计方法——电路原理图输入法1.5.2&Verilog&HDL设计法与传统的电路原理图输入法的比较1.5.3&Verilog的标准化与软核的重用1.5.4&软核、固核和硬核的概念及其重用  1.6&采用硬件描述语言(Verilog&HDL)的设计流程简介1.6.1&自顶向下(Top_Down)设计的基本概念1.6.2&层次管理的基本概念1.6.3&具体模块的设计编译和仿真的过程1.6.4&具体工艺器件的优化、映像和布局布线  小结  思考题 第2章&Verilog语法的基本概念  概述2.1&Verilog模块的基本概念  2.2&Verilog用于模块的测试  小结  思考题 第3章&模块的结构、数据类型、变量和基本运算符号  概述  3.1&模块的结构3.1.1&模块的端口定义3.1.2&模块内容3.1.3&理解要点3.1.4&要点总结  3.2&数据类型及其常量和变量3.2.1&常量3.2.2&变量  3.3&运算符及表达式3.3.1&基本的算术运算符3.3.2&位运算符  小结  思考题 第4章&运算符、赋值语句和结构说明语句  概述  4.1&逻辑运算符  4.2&关系运算符  4.3&等式运算符  4.4&移位运算符  4.5&位拼接运算符  4.6&缩减运算符  4.7&优先级别  4.8&关&键&词  4.9&赋值语句和块语句   4.9.1&赋值语句   4.9.2&块语句  小结  思考题 第5章&条件语句、循环语句、块语句与生成语句  概述  5.1&条件语句(if_else语句)  5.2&case语句  5.3&条件语句的语法  5.4&多路分支语句  5.5&循环语句   5.5.1&forever语句   5.5.2&repeat语句   5.5.3&while语句   5.5.4&for语句  5.6&顺序块和并行块   5.6.1&块语句的类型   5.6.2&块语句的特点  5.7&生成块   5.7.1&循环生成语句   5.7.2&条件生成语句   5.7.3&case生成语句  5.8举例   5.8.1&四选一多路选择器   5.8.2&四位计数器  小结  思考题 第6章&结构语句、系统任务、函数语句和显示系统任务&  概述  6.1&结构说明语句6.1.1&initial语句6.1.2&always语句  6.2&task和function说明语句6.2.1&task和function说明语句的不同点6.2.2&task说明语句6.2.3&function说明语句6.2.4&函数的使用举例6.2.5&自动(递归)函数6.2.6&常量函数6.2.7&带符号函数&  6.3&关于使用任务和函数的小结6.4&常用的系统任务6.4.1&$display和$write任务6.4.2&文件输出6.4.3&显示层次6.4.4&选通显示&6.4.5&值变转储文件  6.5&其他系统函数和任务&  小结  思考题& 第7章&调试用系统任务和常用编译预处理语句  概述  7.1&系统任务&$monitor  7.2&时间度量系统函数$time  7.3&系统任务$finish  7.4&系统任务$stop  7.5&系统任务$readmemb和$readmemh  7.6&系统任务&$random  7.7&编译预处理7.7.1&宏定义?define7.7.2&文件包含"处理?include7.7.3&时间尺度?timescale7.7.4&条件编译命令?ifdef、?else、?endif7.7.5&条件执行  小结  思考题 第8章&语法概念总复习练习  概述  小结第二部分&设计和验证部分 第9章&Verilog&HDL模型的不同抽象级别  概述  9.1&门级结构描述9.1.1&与非门、或门和反向器及其说明语法9.1.2&用门级结构描述D触发器9.1.3&由已经设计成的模块构成更高一层的模块  9.2&Verilog&HDL的行为描述建模9.2.1&仅用于产生仿真测试信号的Verilog&HDL行为描述建模9.2.2&Verilog&HDL建模在TopDown设计中的作用和行为建模的可综合性问题  9.3&用户定义的原语  小结  思考题 第10章&如何编写和验证简单的纯组合逻辑模块  概述  10.1&加法器  10.2&乘法器  10.3&比较器  10.4&多路器  10.5&总线和总线操作  10.6&流水线  小结  思考题 第11章&复杂数字系统的构成  概述  11.1&运算部件和数据流动的控制逻辑11.1.1&数字逻辑电路的种类11.1.2&数字逻辑电路的构成  11.2&数据在寄存器中的暂时保存  11.3&数据流动的控制  11.4&在Verilog&HDL设计中启用同步时序逻辑  11.5&数据接口的同步方法  小结  思考题 第12章&同步状态机的原理、结构和设计  概述  12.1&状态机的结构  12.2&Mealy状态机和Moore状态机的不同点  12.3&如何用Verilog来描述可综合的状态机12.3.1&用可综合Verilog模块设计状态机的典型办法12.3.2&用可综合的Verilog模块设计、用独热码表示状态的状态机12.3.3&用可综合的Verilog模块设计、由输出指定的码表示状态的状态机12.3.4&用可综合的Verilog模块设计复杂的多输出状态机时常用的方法  小结  思考题 第13章&设计可综合的状态机的指导原则  概述  13.1&用Verilog&HDL语言设计可综合的状态机的指导原则  13.2&典型的状态机实例  13.3&综合的一般原则  13.4&语言指导原则  13.5&可综合风格的Verilog&HDL模块实例13.5.1&组合逻辑电路设计实例13.5.2&时序逻辑电路设计实例  13.6&状态机的置位与复位13.6.1&状态机的异步置位与复位13.6.2&状态机的同步置位与复位小结思考题第14章&深入理解阻塞和非阻塞赋值的不同  概述14.1&阻塞和非阻塞赋值的异同14.1.1&阻塞赋值14.1.2&非阻塞赋值  14.2&Verilog模块编程要点  14.3&Verilog的层次化事件队列  14.4&自触发always块  14.5&移位寄存器模型  14.6&阻塞赋值及一些简单的例子  14.7&时序反馈移位寄存器建模  14.8&组合逻辑建模时应使用阻塞赋值  14.9&时序和组合的混合逻辑——使用非阻塞赋值  14.10&其他阻塞和非阻塞混合使用的原则  14.11&对同一变量进行多次赋值  14.12&常见的对于非阻塞赋值的误解  小结  思考题 第15章&较复杂时序逻辑电路设计实践  概述  小结  思考题 第16章&复杂时序逻辑电路设计实践  概述16.1&二线制I2C&CMOS串行EEPROM的简单介绍16.2&I2C总线特征介绍16.3&二线制I2C&CMOS串行EEPROM的读写操作&16.4&EEPROM的Verilog&HDL程序总结  思考题 第17章&简化的&RISC_CPU设计  概述17.1&课题的来由和设计环境介绍17.2&什么是CPU17.3&RISC_CPU结构 17.3.1&时钟发生器 &17.3.2&指令寄存器17.3.3&累加器17.3.4&算术运算器17.3.5&数据控制器17.3.6&地址多路器17.3.7&程序计数器17.3.8&状态控制器17.3.9&外围模块  17.4&RISC_CPU&操作和时序17.4.1&系统的复位和启动操作17.4.2&总线读操作17.4.3&总线写操作17.5&RISC_CPU寻址方式和指令系统17.6&RISC_CPU模块的调试&17.6.1&RISC_CPU模块的前仿真17.6.2&RISC_CPU模块的综合17.6.3&RISC_CPU模块的优化和布局布线  小结  思考题 第18章&虚拟器件/接口、IP和基于平台的设计方法及其在大型数字系统设计中的作用  概述  18.1&软核和硬核、宏单元、虚拟器件、设计和验证IP以及基于平台的设计方法  18.2&设计和验证IP供应商  18.3&虚拟模块的设计  18.4&虚拟接口模块的实例  小结  思考题第三部分&设计示范与实验练习 概述 练习一&简单的组合逻辑设计 练习二&简单分频时序逻辑电路的设计 练习三&利用条件语句实现计数分频时序电路 练习四&阻塞赋值与非阻塞赋值的区别 练习五&用always块实现较复杂的组合逻辑电路 练习六&在Verilog&HDL中使用函数 练习七&在Verilog&HDL中使用任务(task) 练习八&利用有限状态机进行时序逻辑的设计 练习九&利用状态机实现比较复杂的接口设计 练习十&通过模块实例调用实现大型系统的设计 练习十一&简单卷积器的设计  附录一&A/D转换器的Verilog&HDL模型机所需要的技术参数  附录二&2K*8位&异步&CMOS&静态RAM&HM65162模型 练习十二&利用SRAM设计一个FIFO第四部分&语法篇 语法篇1&关于Verilog&HDL的说明  一、&关于&IEEE&1364标准  二、&Verilog简介  三、&语法总结  四、&编写Verilog&HDL源代码的标准  五、&设计流程 语法篇2&Verilog硬件描述语言参考手册  一、&Verilog&HDL语句与常用标志符(按字母顺序排列)  二、&系统任务和函数(System&task&and&function)  三、&常用系统任务和函数的详细使用说明  四、&Command&Line&Options&命令行的可选项  五、&IEEE&Verilog&标准简介参考文献光盘内容介绍&目录如下:温馨提示:我们可提供各类技术,因篇幅限制不能全部列出,若没找到你要的技术资料,可联系客服提供(客服电话:010-0-)网站:
店主推荐450.00元450.00元200.00元200.00元200.00元200.00元200.00元200.00元200.00元200.00元200.00元200.00元
Copyright(C)
孔夫子旧书网
京ICP证041501号
海淀分局备案编号
成功加入购物车来自:恐龙书社您可以verilog语言编写八选一数据选择器_中华文本库
第1页/共6页
Verilog ——八选一选择器 八选一选择器
一、 实验目的
编写一个八选一的选择器,并在verilog 软件上进行仿真。
1、 源代码
(1)用数据流描述的八选一多路选择器模块,采用了逻辑方程
module mux8_to_1(out,i0,i1,i2,i3,i4,i5,i6,i7,s2,s1,s0);
input i0,i1,i2,i3,i4,i5,i6,i7;
input s2,s1,s0;
assign out=
s2?(s1?(s0?i7:i6):(s0?i5:i4)):(s1?(s0?i3:i2):(s0?i1:i0));
(2)用数据流描述的八选一多路选择器模块,采用了条件操作语句
module mux8_to_1(out,i0,i1,i2,i3,i4,i5,i6,i7,s2,s1,s0);
input i0,i1,i2,i3,i4,i5,i6,i7;
input s2,s1,s0;
assign out=(~s2&~s1&~s0&i0)|
(~s2&~s1&s0&i1)|
(~s2&s1&~s0&i2)|
(~s2&s1&s0&i3)|
(s2&~s1&~s0&i4)|
(s2&~s1&s0&i5)|
(s2&s1&~s0&i6)|
(s2&s1&s0&i7);
第1页/共6页
寻找更多 ""定价:¥65.00
样张翻阅 /
浏览此书同时浏览过的图书
·&· · ·& ·& · ·& ·& ·& ·& ·& ·& ·& ·
尊敬的客户您好,欢迎光临我公司网站!我是今天的在线值班客服,点击“开始交谈”即可与我对话&IMG src="/data/upload/remote/3211.gif?a=&c=6411500" width=1 height=1&
版权所有 机械工业出版社 京ICP备号Copyright (C)
CmpBook. All Rights Reserved
北京西城区百万庄大街22号100037 客服热线:010-003Verilog语法基本概念 三亿文库
003Verilog语法基本概念
Verilog 语法基本概念
第一课时 1.1 概述 Verilog HDL是一种用于数字系统设计的语言。用Verilog HDL描述的电路设计就是该电路的verilog HDL模型,也称为模块。Verilog模型可以是实际电路的不同级别的抽象。抽象的级别和所对应的模型类型共有以下五种。 ? 系统级(system-level):用语言提供的高级结构能够实现所设计模块的外部功能模型。 ? 算法级(algorithm-level):用语言提供的高级结构能够实现算法运行的模型。 ? RTL级(register transfer level):描述数据在寄存器之间的流动和如何处理、控制这些数据流动的模型。 以上三种模型属于行为描述,只有RTL级才与逻辑电路有明确的对应关系。 ? 门级(gate-level):描述逻辑门以及逻辑门之间连接的模型。 与逻辑电路有确定的连接关系,以上四种数字系统设计工程师必须掌握(重点为前三种)。 ? 开关级(switch-level):描述器件中三极管和储存节点以及它们之间连接的模型。 Verilog HDL行为描述语言作为一种结构化和过程性语言,其语法结构非常适合算法级和RTL级的模型设计(系统级建模常用systemc、systemverilog等)。这种行为描述语言具有以下功能: ? 可描述顺序执行或并行执行的程序结构; ? 用延迟表达式(不可综合)或事件表达式来明确地控制过程的启动时间; ? 通过命名的事件来触发其他过程里的激活行为或停止行为; ? 提供了条件如if-else,case(类似c语言中switch)等循环程序结构; ? 提供了可带参数且非零延续时间的任务(task)程序结构; ? 提供了可定义新的操作符的函数结构(function); ? 提供了用于建立表达式的算术运算符、逻辑运算符、位运算符(类c语言)。 ? Verilog HDL语言作为一种结构化的语言 1.2 模块基本概念 例1 module muxtwo(out, a, b, sl);
input a, b,//依次为数据输入端口a、数据输入端口b、控制输入sl用于选择控制//数据输出端口//定义out为reg型,在always块内被赋值的对象必须定义为reg型
Ultrawise always @ (sl or a or b)//当三个输入端口只要一个发生改变,则进入always块
out =//如果sl为0,则out选择a作为输出
out =//如果sl为1,则out选择b作为输出
end endmodule
图1 多路选择器 从上面代码和注释中,很容易理解上面模块的功能-实现了一个二选一多路选择器,输出out与输入a一致还是与输入b一致,有sl的电平决定(1代表高电平,0代表低电平)。 例2 module adder(count, sum, a, b, cin);//分别为进位位输出端口count,和位输出端口sum,
//被加数输入端口a,加数输入端口b,前级进位位输
//入端口cin
input [2:0] a,//位宽为3//默认位宽为1
output [2:0]
assign {count, sum} = a + b +//和数赋值为sum,进位赋值为count endmodule 例2通过连续赋值语句描述了一个名为adder的模块,此模块的功能实现了一个3bits宽的加法器。从例子中可以看出整个Verilog HDL程序是位于module和endmodule声明语句之间的。 上面这些例子都是可以综合的,通过综合工具可以自动转换为由与门、或门和非门组成的组合逻辑。 1.2 Verilog用于模块的测试 Verilog还可以用来描述变化的测试信号。描述测试信号的变化和测试过程的模块叫做测试平台(testbench),用来对前面介绍的模块添加激励信号,观察模块的输出响应,从而验证模块的功能的是否正确。 Ultrawise激励产生被测模块响应 图2 测试原理图 下面通过一个例子来讲解如何编写测试模块和如何对模块进行测试。选择前面所讲的多路选择器作为被测模块。 例3 `include “muxtwo.v”//将多路选择器包含进来//模块名为test
reg ain, bin,//将被测模块的输入信号即激励信号定义成reg型//时钟信号,用来激发循环操作//被测模块的输出即响应
initial//用于初始化信号值,只在开始执行一次 begin
select = 0;
clock = 0; end
always #50 clock = ~//产生一个不断重复、周期为100个时间单位的时钟信号
always @ (posedge clock) begin ain = {$random}%2;//{$random}为系统任务,它会产生一个随机数,产生随机的 //位信号流ain,%2为模2运算
bin = ($random)%2;//延迟3个时间单位后产生随机的位信号流bin,
//即有时为1,有时为0 end
always #10000 select = !
//产生周期为10000个单位时间的选通信号变化
muxtwo mux(.out(outw), .a(ain), .b(bin), .sl(select)); //实例引用多路器,并加入测试信号流,以观察模块的输出out。其中,muxtwo是已 //经定义的(行为的或结构的)模块,mux表示在本测试模块中有一个名为mux的//muxtwo模块,其四个端口分别为:.out(), .a(), .b(), .sl(), //“.”表示端口;后面紧跟端口名,其名称必须于muxtwo模块定义的端口名一致; //小括号内的信号名为与端口连接的信号线名,可以用别的名,但必须在本模块中定 Ultrawise//义,说明其类型 endmodule
通过上面的测试模块我们可以观察muxtwo模块的输出看其功能是否正确。 第二课时 1.1 模块结构 Verilog的基本设计单元是模块(block)。一个模块由两部分组成,一部分描述接口,另一部分描述逻辑功能,即定义输入如何影响输出的,图1是模块结构组成图。 图1 模块结构组成 图中的程序模块旁有一个电路符号。在许多方面,程序模块和电路图符号是一致的,因为电路图符号的引脚也就是程序模块的接口信号。程序模块描述了电路图符号所实现的逻辑功能。上面的Verilog设计中,input,out表示信号的流向,下面assign语句说明了模块实现的逻辑功能。以上就是设计一个简单的Verilog模块所需的全部内容。 1.2 模块端口定义 模块的端口声明了模块的输入输出口。定义格式如下: module 模块名(口1, 口2, 口3, 口4,…….); 模块的端口表示的是模块的输入、输出口名,也就是用来与别的模块联系的端口标志。在模块被引用时,在引用的模块中,有些信号要输入到被引用的模块中,有些信号要从被引用的模块中抽取出来。在引用模块时其端口可以用两种方式来连接: ? 在引用时,严格按照模块定义的端口顺序来连接,不用标明原模块定义时规定的端口名,例如: 模块名(端口1信号名, 端口2信号名, 端口3信号名。。。。。); ? 在引用时用“.”符号,标明原模块定义时规定的端口名(建议采取这种方式),例如:模块名(.端口1名(连接信号1名), .端口2名(连接信号2名)。。。。。。); 这样表示的好处在于可以用端口名与被引用模块的端口相对应,而不必严格按照端口顺序对应,提高了程序的可读性和可移植性。(建议采取这种方式) 1.3 模块包含内容 模块可以分成三部分组成,包括I/O说明、内部信号声明和功能定义。 Ultrawise ? I/O说明 输入口:input [信号位宽-1:0] 端口名1;
input [信号位宽-1:0] 端口名2;
input [信号位宽-1:0] 端口名i;//共有i个输入口
输出口:output [信号位宽-1:0] 端口名1;
output [信号位宽-1:0] 端口名2;
output [信号位宽-1:0] 端口名j;//共有j个输入口
输入/输出口: inout [信号位宽-1:0] 端口名1;
inout [信号位宽-1:0] 端口名2;
inout [信号位宽-1:0] 端口名k;//共有k个双向口
? 内部信号声明 在模块内用到的和与端口有关或功能实现所用到的wire或reg型变量的声明。 形如:reg [信号位宽-1:0]
reg变量1, reg变量2。。。;
wire [信号位宽-1:0]
wire变量1, wire变量2。。。; ? 功能定义 模块中最重要的部分是逻辑功能定义部分。有三种方法可在模块中产生逻辑。 1. 连续赋值语句assign 形如:assign a = b & c; 只要写出逻辑表达式即可,可读性强。 2. 实例元件(不常用) 形如:and u1(q, a, b); 采用实例元件的方法象在电路图输入方式下调入库元件一样,键入元件的名字和相应的管脚即可。 3. 用always 块 形如:always @ (posedge clk or posedge clr)
else Ultrawise
联系客服:cand57</

我要回帖

更多关于 verilog顶层文件编写 的文章

 

随机推荐