《EDA技术与应用》课件第6章程序设计实例.pptx

《EDA技术与应用》课件第6章程序设计实例.pptx

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

第6章程序设计实例;在掌握了EDA技术的基础知识和基本操作后,学习EDA技术最有效的方法就是进行基于EDA技术的应用电路设计。本章首先设计了一些基本组合逻辑电路和时序逻辑电路,然后逐渐深入,详细阐述了分频器、序列信号发生及检测器、CRC校验码、FIR滤波器等应用实例,力图将EDA技术与通信信号处理有机结合起来,为读者以后的工程应用打下坚实的基础。;6.1Verilog程序实例

6.1.1常见组合逻辑电路的设计

1.编码器

在日常生活中常用十进制数、文字和符号等表示各种事物,如可以用4位二进制数表示十进制数的8421BCD码,用7位二进制代码表示常用符号的ASCII码。数字电路只能以二进制信号工作,因此需要将十进制数、文字和符号等用一个二进制代码来表示。用文字数字或符号代表特定对象的过程叫编码。电路中的编码就是在一系列事物中将其中的每一个事物用一组二进制代码来表示,编码器就是实现这种功能的电路。编码器的逻辑功能就是把输入的2N个信号转化为N位输出。常用的编码器根据工作特点分为普通编码器和优先编码器两种。;;

在begin-end块内,程序顺序执行,首先判断输入信号的最高位是否为高电

平,如是高电平,则对该位编码,如果不是才对下一位进行判断、编码,直

至输入信号的最低位,如果输入信号中没有任何位为高电平,则表示当前无

输入信号,输出端a输出高电平,指示当前无输入信号。;;yex_n=1;

ys_p=0;

end

end

else

begin

y_n=3h7;

yex_n=1;

ys_p=1;

end

endmodule;;2.译码器

译码器是编码的逆过程,是将编码时赋予代码的特定含义“翻译”成一个对应的状态信号,通常是把输入的N个二进制信号转换为2N个代表原意的状态信号。译码器就是实现译码功能的电路。常见的有二进制译码器、二—十进制译码器和显示译码器等。

1)二进制译码器

二进制译码器的逻辑功能是把输入的二进制代码表示的所有状态翻译成对应的输出信号。若输入的是3位二进制代码,则3位二进制代码可以表示8种状态,因此就有8个输出端,每个输出端分别表示一种输出状态。因此又把3位二进制译码器称为3-8线译码器,与此类似的还有2-4译码器,4-16译码器等。

下面首先看一个最简单的2-4译码器。;例6.3用Verilog语言设计实现2-4译码器。代码如下:

modulebinary_decoder_2_4

(

inputi_en,

input[1:0]i_dec,

outputreg[3:0]o_dec

);

always@(i_enori_dec)

if(i_en)

case(i_dec)

2b00:o_dec=4b0001;

2b01:o_dec=4b0010;

2b10:o_dec=4b0100;

2b11:o_dec=4b1000;

default:

o_dec=4bxxxx;

endcase

else

o_dec=4b0000;//使能信号en无效时所有输出信号无效

endmodule;;例6.4用Verilog语言设计实现CT74138译码器。

//CT74138译码器顶层模块

moduledecoder_38(STA,STB,STC,A,Y);

inputSTA,STB,STC;

input[2:0]A;

output[7:0]Y;

decoderu1(.SSTA(STA),.SSTB_N(STB),.SSTC_N(STC),.SA(A),.SY_N(Y));

endmodule

//CT74138译码器基本功能模块

moduledecoder(SSTA,SSTB_N,SSTC_N,SA,SY_N);

inputSSTA,SSTB_N,SSTC_N;

input[2:0]SA;

output[7:0]SY_N;

reg[7:0]m_y;

assignSY_N=m_y;

always@(SSTA,SSTB_N,SSTC_N,SA)

if(SSTA!(SSTB_N||SSTC_N));case(SA)

3b000:m_y=8

3b001:m_y=8b1

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档