EDA第7章(后半部分).ppt

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

第7章 Verilog设计的层次与风格 7.7 基本组合电路设计 数据寄存器 数据锁存器和数据寄存器的区别: 从寄存数据的角度看,锁存器和寄存器的功能是相同的 锁存器一般是由电平信号来控制(电平触发),属于电平敏感型 寄存器一般由同步时钟信号控制(边沿触发) 【例7.35】 可变模加法/减法计数器 module updown_count(d,clk,clear,load,up_down,qd); input clk,clear,load,up_down; input[7:0] d; output[7:0] qd; reg[7:0] cnt; assign qd=cnt; always @(posedge clk) begin if(!clear) cnt=8h00; //同步清0,低电平有效 else if(load) cnt=d; //同步预置 else if(up_down) cnt=cnt+1; //加法计数 else cnt=cnt-1; //减法计数 end endmodule 结论2 时序电路的输出是由时钟控制的(电平控制、边沿控制) 边沿控制方式一定要用always语句描述 电平控制可以使用assign语句,也可以使用always语句。但使用always语句是要注意在敏感列表里要把时钟信号和所有的输入信号都列出来。 7.9 三态逻辑设计 【例7.39】 行为描述的三态门 module tristate1(in,en,out); input in,en; output reg out; always @(in or en) begin if(en) out=in; else out=1bz; end endmodule 【例7.40】 调用门元件bufif1描述的三态门 module tristate2(in,en,out); input in,en; output out; tri out; bufif1 b1(out,in,en); //注意三态门端口的排列顺序 endmodule 【例7.41】 数据流描述的三态门 module tristate3(out,in,en); input in,en; output out; assign out=en?in:1‘bz; //若en=1,out=in; //若en=0,out为高阻态 endmodule 【例7.42】 三态双向驱动器 module bidir(y,a,en,b); input a,en; output b; inout y; assign y=en?a:bz; assign b=y; endmodule 【例7.44】 三态双向总线缓冲器 module ttl245(a,b,oe,dir); input oe,dir; //使能信号和方向控制 inout[7:0] a,b; //双向数据线 assign a=({oe,dir}==2b00)?b:8bz; assign b=({oe,dir}==2b01)?a:8bz; endmodule 【例7.46】 用文本方式调用RAM存储器模块 module ram_dy(addr,clk,din,wr,qout); //端口定义 input[6:0] addr; input clk; input[7:0] din; input wr; output[7:0] qout; myram u1(address(addr),.clock(clk),.data(din),.wren(wr),.q(qout)); //元件例化 endmodule FIFO模块的功能仿真波形图(Quartus Ⅱ) 基本时序电路的设计 1 D-FF designs(基本D触发器) 基本时序电路的设计 2 带异步清0、异步置1的D触发器 module DFF1(q, qn, d, clk, set, reset); input d, clk, set, reset; output q, qn; reg q, qn; always @(posedge clk or negedge set or negedge reset) begin if (!reset) begin q = 0; //异步清0,低电平有效 qn = 1; end else if (!set) begin q = 1; //异步置1,低电平有效 qn = 0; end else begin q = d; qn = ~d; end end endmodule 基本时序电路的设计

您可能关注的文档

文档评论(0)

yaocen + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档