第三章VHDL程序设计3案例.ppt_第1页
第三章VHDL程序设计3案例.ppt_第2页
第三章VHDL程序设计3案例.ppt_第3页
第三章VHDL程序设计3案例.ppt_第4页
第三章VHDL程序设计3案例.ppt_第5页
免费预览已结束,剩余82页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,基本逻辑电路:组合逻辑电路、时序逻辑电路一组合逻辑电路设计简单门电路、编码器、译码器、加法器、多路选择器、三态门等。,3.9基本逻辑电路设计,2,1、基本门电路,3,2、编码器设计一个8输入优先级编码器,y0级别最低,y7级别最高;输出为3位编码。,4,方法1:利用if多选择语句自顶向下的优先特性,5,方法2:进程内为顺序语句,最先描述优先级最低,最后描述优先级最高,可实现优先级编码。,6,方法3:利用条件赋值语句,7,3、译码器译码器是编码器的逆过程。如3-8译码器:,8,方法1:使用逻辑左移运算符,libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitydecoderisport(inp:instd_logic_vector(2downto0);outp:outstd_logic_vector(7downto0);enddecoder;architecturertlofdecoderisbeginoutp=shl(“00000001”,inp);endrtl;,9,方法2:使用process语句,libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitydecoderisport(inp:instd_logic_vector(2downto0);outp:outstd_logic_vector(7downto0);enddecoder;architecturertlofdecoderisbeginprocess(inp)beginoutp0);outp(conv_integer(inp)=1;endprocess;endrtl;,10,方法3:使用case语句实现。,11,12,方法4:使用条件赋值语句,13,4、加法器带进位的4位加法器符号如下:,Sum(i)=a(i)b(i)cinC(i+1)=a(i)b(i)+(a(i)+b(i)c(i),14,方法1:用forloop语句实现,15,方法2:直接使用加法“+”函数:,位宽扩展,16,加法器仿真结果:,17,5、多路选择器前面用if语句、case语句、条件赋值语句、选择赋值语句分别描述过4选1选择器。6、三态门VHDL语言通过指定大写的Z值表示高阻状态a:std_logic;a_bus:std_logic_vector(7downto0);指定高阻状态如下:a=Z;a_bus=“ZZZZZZZZ”;,18,三态门电路描述,19,三态门仿真结果:,20,二时序逻辑电路设计触发器、寄存器、计数器、分频器、信号发生器等。一)时序电路特殊信号的描述时钟信号和复位信号1、时钟信号描述常用的描述方式:1)进程的敏感信号是时钟信号,在进程内部用if语句描述时钟的边沿条件。,21,如:process(clock_signal)beginif(clock_edge_condition)thensignal_out=signal_in;其它时序语句endif;endprocess;,22,2)在进程中用waituntil语句描述时钟信号,此时进程将没有敏感信号。如:processbeginwaituntil(clock_edge_condition);signal_out=signal_in;其它时序语句endprocess;,23,注意:a.在对时钟边沿说明时,一定要注明是上升沿还是下降沿。b.一个进程中只能描述一个时钟信号。c.waituntil语句只能放在进程的最前面或最后面。3)时钟边沿的描述时钟上升沿:(clockeventandclock=1)时钟下降沿:(clockeventandclock=0),24,2、触发器的复位信号描述1)同步复位:在只有以时钟为敏感信号的进程中定义。如:process(clock_signal)beginif(clock_edge_condition)thenif(reset_condition)thensignal_out=reset_value;elsesignal_out=signal_in;endif;endif;endprocess;,25,2)异步复位:进程的敏感信号表中除时钟信号外,还有复位信号。如:process(reset_signal,clock_signal)beginif(reset_condition)thensignal_out=reset_value;elsif(clock_edge_condition)thensignal_out=signal_in;endif;endprocess;,26,clock,sig_in,sig_out1,sig_out2,reset,同步复位,异步复位,27,二)常用时序电路设计1、触发器(Flip_Flop)1)D触发器,28,异步置位/复位D触发器,29,同步复位D触发器,30,比较:异步置位的锁存器(Latch),31,libraryieee;useieee.std_logic_1164.all;entityt_ffisport(t,clk:instd_logic;q:bufferstd_logic);endt_ff;architecturertloft_ffisbeginprocess(clk)beginifclkeventandclk=1thenift=1thenq=notq;elseq=q;endif;endprocess;endrtl;,T,Clk,Q,2)T触发器,32,libraryieee;useieee.std_logic_1164.all;entityrs_ffisport(r,s,clk:instd_logic;q,qn:bufferstd_logic);endrs_ff;architecturertlofrs_ffisbegin,process(r,s,clk)beginifclkeventandclk=1thenifs=1andr=0thenq=0;qn=1;elsifs=0andr=1thenq=1;qn=0;elsifs=0andr=0thenq=q;qnstate=ERROR;2、直接回到已设定的状态。如果系统对状态机的容错性要求不高,那么可以不对状态机出错进行处理,直接回到某一确定状态(如初始状态S0)。,85,第3章习题四1、给触发器复位的方法有哪两种?如果时钟进程中用了敏感信号表,哪种复位方法要求把复位信号放在敏感信号表中?2、设计一个任意n分频的分频器。3、设计一个用于时钟(分、秒)计数的60进制的计数器(分个、十位)。4、设计一个用于时钟(小时)计数的24进制的计数器(分个、十位)。5、给定一个参考晶振频率f=1MHz,设计一个数字电子表。,人有了知识,就会具备各种分析能力

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论