Verilog,VHDL经典简明教程.ppt

  1. 1、本文档共44页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Verilog,VHDL经典简明教程

Verilog for RTL Coding 内容提要 面向综合的Verilog语法子集 面向测试的Verilog语法子集 IEEE HDL Standards VHDL IEEE Std 1076-1987 IEEE Std 1076-1993 IEEE Std 1076-2000 (VHDL-AMS) IEEE Std 1076-2002 Verilog IEEE Std 1364-1987 IEEE Std 1364-1995 IEEE Std 1364-2000 程序结构 Verilog代码示例 module test(a,b,c,d,z,sum); input a,b; input[3:0] c,d; output z; output[3:0] sum; reg [3:0] sum; //端口信号 wire and_out; //内部信号 AND instance1(a,b,and_out); INV instance2(and_out, z); always @(c or d) begin sum = c + d; end endmodule Module Name Port List 信号方向:input,output,inout 信号类型:wire/reg Verilog的四值逻辑 0, 1, ’X’, ’Z’ 数的表示方式 size‘basevalue Size: 以bit为单位 Base: b(二进制),o(八进制),d(十进制),h(16进制) Value:和进制相应的数值,x, z, ? (x,z不区分大小写) 例 16 //32位十进制数 8’d16 8’h10 8’b0001_0010 32’bx //32位x 2’b? ?、z、Z都表示高阻 常用数据类型 wire(线网) 表示元件之间的物理连接 wire a,b; wire [3:0] address; reg(寄存器) always/initial过程的输出 不要和flip-flop(D触发器)混淆 reg [1:5] state, newstate; 另一种代码风格 VHDL电路模块的实现 VHDL 并行赋值语句 (=) 选择并行赋值语句 条件并行赋值语句 进程 (process) 变量赋值(:=) 顺序赋值(=) IF语句 CASE语句 元件例化PORT MAP VHDL和Verilog的对比 连续赋值语句 (assign) 实现组合逻辑电路 连续赋值语句 (assign) 避免出现反馈环路 常用的操作符 算术操作:+, -, *, /, %(取模) 关系操作:, , =, =, ==(相等), !=(不等) 逻辑操作:, ||, !, 位操作: ~(非), , |, ^(异或), ~^(同或) 归约操作:, ~, |, ~|, ^, ~^ 移位操作:, 条件操作:?: 连接和复制:{ , nx, } 几种操作的比较 位操作、归约操作和逻辑操作 几种操作的比较 算术和关系操作 元件例化 VHDL u1:seg7 port map(b_ii,b_seg); u1:seg7 port map (ii=b_ii, seg=b_seg); Verilog AND u1(a,b,and_out); AND u1(.a(a), .b(b), .o(and_out)); 过程 过程 (always) 阻塞赋值(=) 非阻塞赋值(=) if语句 case语句 if语句 case语句 阻塞赋值和非阻塞赋值 阻塞赋值(=) 阻塞性过程赋值在其后所有语句执行前执行,即在下一语句执行前该赋值语句完成执行。 非阻塞性(=) 过程赋值中,对目标的赋值是非阻塞的(因为时延),但可预定在将来某个时间步发生(根据时延;如果是0时延,那么在当前时间步结束)。 当非阻塞性过程赋值被执行时,计算右端表达式,右端值被赋于左端目标,并继续执行下一条语句。 预定的最早输出将在当前时间步结束时,这种情况发生在赋值语句中没有时延时。在当前时间步结束或任意输出被调度时,即对左端目标赋值。 在同一个always/initial块里不要混用两种赋值语句 阻塞赋值实现组合逻辑电路 阻塞赋值实现组合逻辑电路 在实现组合逻辑电路的always块里用阻塞赋值 类似VHDL在process里对变量赋值 always块的敏感表 实现组合逻辑电路的always块敏感表必须写全,否则仿真结果和综合结果会不一致 避免Latch的产生 实现组合逻辑电路的always块中if和case语句的分支必须写全。 避免Latch的产生 避免产生Latch的办法 第一种 第二种 触发器 always块的@(posedge

文档评论(0)

153****9595 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档