第2讲Verilog基础知识.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第2讲Verilog基础知识

备注页 第2讲 Verilog基础知识 内容提纲 基本词法 数据类型 运算符 一、基本词法 程序格式 间隔符与注释 逻辑与数字表示 字符串与字符变量 命名规则、系统命令关键字 程序格式 Verilog程序有模块构成,每个模块有包含在module和endmodule之间的语句构成 和C语言书写类似,以分号作为一条语句结束 每个文件可包含多个模块,但只有一个顶层模块 以.v作为程序源文件的扩展名 模块基本结构 Module xx(); 模块声明:包括模块名字、模块输入输出端口列表,测试模块例外 端口定义:input,output,inout 信号类型声明:reg,wire 逻辑功能定义 endmodule 间隔符与注释 间隔符: 包括空格、TAB、换行符及换页符 在verilog程序中起分隔作用 与c语言一样,增加代码的可读性 注释 也与C语言一致,有两种方式: 单行注释://开始,本行结束 多行注释: /*开始,*/结束 有些综合工具的命令以注释的方式出现 如//synopsys +命令 逻辑与数字表示 四种逻辑状态: 用数字和字符表达逻辑、状态 整数及其表示 两种方式: 简单十进制方式:0~9加上“+”“-”号 指定位宽的基数方式: +/-’位宽基数符号基数表示 基数符号及其表示(字母大小写不敏感) 表示说明 ?高阻的另一种表示 _增加可读性 最高位在左边 位宽缺省为机器字长,大于舍高位,不足补0或x或z 位宽与进制标志中间不能空格,负号只能放最前面 举例 实数及其表示 可以用十进制和科学计数法两种格式,用十进制表示,小数点两边至少要有一个数字 1.2 0.1 238.22 1.2e-2 111.300_763E12 .12 //非法 13. //非法 4.e3 //非法 字符串与字符串变量 与c语言类似 用前导控制键引入 特殊字符,配合仿真 工具输出相关信息 说明 用“”括起来的字符序列,必须包含在一行 如果作为表达式或赋值操作数,作为无符号数,为对应的ASCII值 长度不足补0,超过丢掉高位 举例 Module test_string Reg [8*14:1] str_var; Initial Begin str_var=“hello world”;//11个字符 $display(“%s is stored as %h”, str_var, str_var); str_var={str_var,”!!!”}; $display(“%s is stored as %h”, str_var, str_var); End Endmodule 结果: Hello world is stored as 00000048656c6c6f20776f726c64 Hello world is stored as 48656c6c6f20776f726 命名规则 必须以字母或下划线开头,长度小于1024个字符,大小写敏感 可以使用0~9数字和$ 书写规范建议 1、用有意义的有效的名字如 Sum 、CPU_addr等。 2、用下划线区分词。 3、采用一些前缀或后缀,如时钟采用Clk 前缀:Clk_50,Clk_CPU;低电平采用_n 后缀:Enable_n; 4、统一一定的缩写 如全局复位信号 Rst。 5、同一信号在不同层次保持一致性,如同一时钟信号必须在各模块保持一致。 6、自定义的标识符不能与保留字同名。 7、参数采用大写,如SIZE 举例 _bus1 \~(a+b) 34net //非法 A*b_dd //非法 系统命令 输出控制:%display,%write,%monitor 模拟时标: %time,%realtime 进程控制:%finish,%stop 文件读写: 关键字(保留字),全部由小写字母组成 二、数据类型 线网型 寄存器型 参数型 数组 线网型 可以理解为实际电路中的导线, 连到门或模块的输出,或使用assign赋值,不能在过程语句中赋值(always、initial),主要出现在结构描述中 无驱动时,认为是高阻。 不可以存储任何值 input和inout端口必须定义为线网型,变量不加定义,默认为线网型 举例 Wire/tri完全一样 Wire a,b; //定义一个位宽1位的变量 Wire [7:0] c; //定义一个8位的变量 Wire[0:7] d; 寄存器类型 反映具有电路状态保持功能的电路 由过程赋值语句赋值 未赋值时,被认为是不定态x 在下次过程赋值前,值不变 硬件对应的是触发器和锁存器 寄存器类型 应用说明 均有寄存性 必须说明,无缺省状态 必须出现在过程

文档评论(0)

zilaiye + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档