EDA第7章后半部分.ppt

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

第7章 Verilog设计的层次与风格 7.7 基本组合电路设计 【例7.24】 74138的Verilog描述 module ttl74138(a,y,g1,g2a,g2b); input[2:0] a; input g1,g2a,g2b; output reg[7:0] y; always @(*) begin if(g1 ~g2a ~g2b) //只有当g1、g2a、g2b为100时,译码器使能 begin case(a) 3b000:y=8 //译码输出 3b001:y=8 3b010:y=8 3b011:y=8 3b100:y=8 3b101:y=8 3b110:y=8 3b111:y=8 default:y=8 endcase end else y=8 end endmodule 【例7.25】 8线—3线优先编码器74148的Verilog描述 module ttl74148(din,ei,gs,eo,dout); input[7:0] din; input ei; output reg gs,eo; output reg[2:0] dout; always @(ei,din) begin if(ei) begin dout=3b111;gs=1b1;eo=1b1; end else if(din==8b111111111) begin dout=3b111;gs=1b1;eo=1b0;end else if(!din[7]) begin dout=3b000;gs=1b0;eo=1b1;end else if(!din[6]) begin dout=3b001;gs=1b0;eo=1b1;end else if(!din[5]) begin dout=3b010;gs=1b0;eo=1b1;end else if(!din[4]) begin dout=3b011;gs=1b0;eo=1b1;end else if(!din[3]) begin dout=3b100;gs=1b0;eo=1b1;end else if(!din[2]) begin dout=3b101;gs=1b0;eo=1b1;end else if(!din[1]) begin dout=3b110;gs=1b0;eo=1b1;end else begin dout=3b111;gs=1b0;eo=1b1;end end endmodule 【例7.27】 奇偶校验位产生器 module parity(even_bit,odd_bit,a); input[7:0] a; output even_bit,odd_bit; assign even_bit=^a; //生成偶校验位 assign odd_bit=~even_bit; //生成奇校验位 endmodule 结论1 组合电路的输入一旦有变化,输出马上跟着变化 组合电路一般都用assign语句 当用always描述纯组合电路时,括号内的敏感列表里要把所有的输入列出来 7.8 基本时序电路设计 【例7.30】 电平敏感的1位数据锁存器 module latch1(q,d,le); input d,le; output q; assign q=le?d:q; //le为高电平时,将输入端数据锁存 endmodule 【例7.31】 带置位/复位端的1位数据锁存器 module latch2(q,d,le,set,reset); input d,le,set,reset; output q; assign q=reset?0:(set? 1:(le?d:q)); endmodule 【例7.32】 8位数据锁存器(74LS373) module ttl373(le,oe,q,d); input le,oe; input[7:0] d; output reg[7:0] q; always @* //或写为always @(le,oe,d) begin if(~oe le) q=d; //或写为if((!oe) (le)) else q=8bz; end endmodule 【例7.33】 数据寄存器 module reg_w(dout,din,clk,clr); parameter WIDTH=7; input clk,clr; input[WIDTH:0] di

文档评论(0)

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

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

1亿VIP精品文档

相关文档