数字电路设计课件第五讲.ppt_第1页
数字电路设计课件第五讲.ppt_第2页
数字电路设计课件第五讲.ppt_第3页
数字电路设计课件第五讲.ppt_第4页
数字电路设计课件第五讲.ppt_第5页
已阅读5页,还剩79页未读 继续免费阅读

下载本文档

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

文档简介

第五讲 常用组合 时序逻辑电路的VHDL描述 译码器与编码器设计数码转换电路设计比较器设计数据选择器设计只读存储器设计三态与双向接口设计算术逻辑单元 ALU 设计七段LED显示译码器设计先进先出 FIFO 缓冲器设计键盘扫描及抖动消除电路设计状态机设计 编码器 编码器常常运用于影音压缩或通信方面 原来需要传送2N位数据量 现在只用N位 8 3编码器真值表 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYCoderISPORT X INSTD LOGIC VECTOR 7DOWNTO0 EN INSTD LOGIC Y OUTSTD LOGIC VECTOR 2DOWNTO0 ENDCoder ARCHITECTUREaOFCoderISSIGNALSel STD LOGIC VECTOR 8DOWNTO0 BEGINSel EN Sel 8 EN Sel 7 X 7 Sel 6 X 6 Sel 5 X 5 Sel 4 X 4 Sel 3 X 3 Sel 2 X 2 Sel 1 X 1 Sel 0 X 0 仿真结果 编码器 根据真值表 利用With Select语句或Case When语句或When Else语句来设计 查表法根据逻辑函数式 使用并行直接赋值语句实现 真值表 卡诺图化简 逻辑运算符 译码器 译码器除了在影音压缩或通信方面用于解码外 还可以用作显示译码 将4位BCD码转换成7段码输出 以便在7段LED显示器上显示 另外 还经常被应用在地址总线进行地址选址的工作和芯片的选通控制 3 8译码器真值表 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYencoderISPORT A INSTD LOGIC VECTOR 2DOWNTO0 EN INSTD LOGIC Y OUTSTD LOGIC VECTOR 7DOWNTO0 ENDencoder ARCHITECTUREaOFencoderISSIGNALsel STD LOGIC VECTOR 3DOWNTO0 BEGINsel A 存储器地址译码器设计 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYdecodeISPORT address INSTD LOGIC VECTOR 15Downto0 Valid boot up INSTD LOGIC Sram prom eeprom shadow Periph1 periph2 OUTSTD LOGIC ENDdecode ARCHITECTUREmem decodeOFdecodeISBeginMapper Process address valid boot up begin shadow x 0000 ANDaddress x 4000 ANDaddress x 4008 Then periph1 x 4008 ANDaddress x 8000 ANDaddress x 1000 Theneeprom 1 ENDIF ENDIF ENDPROCESS ENDmem decode 7段LED显示译码器 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITY7LED encodeISPORT D INSTD LOGIC VECTOR 3DOWNTO0 LED7S OUTSTD LOGIC VECTOR 6DOWNTO0 END7LED encode ARCHITECTUREoneOF7LED encodeISBEGINPROCESS D BEGINCASEDISWHEN 0000 LED7SLED7S 0000110 WHEN 0010 LED7SLED7SLED7SLED7SLED7SLED7SLED7SLED7SLED7S 0000000 ENDCASE ENDPROCESS ENDone 静态显示 动态显示 顺序脉冲 LP2900实验装置显示电路 74LS138译码器真值表 设计关键点 74LS138译码器的输入DE1 DE2 DE3应为八进制计数器的状态输出八进制计数器的计数脉冲的周期是74LS138译码器输出扫描信号Ci的负脉冲的宽度 C1 C2 C6为位选信号 74LS138译码器输出Ci输出负脉冲的频率应大于30Hz每位预显示内容应与位选信号Ci同步 7段LED显示器程序 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL USEIEEE STD LOGIC ARITH ALL USEIEEE STD LOGIC UNSIGNED ALL ENTITYSeg7 DspisPORT clk INstd logic CLOCKsegout OUTstd logic vector 7downto0 oscl dp selout OUTstd logic vector 2downto0 DE 1 DB5 DB4 DB3 DB2 DB1 DB0 INstd logic vector 3downto0 ENDSeg7 Dsp ARCHITECTUREaOFSeg7 DspISSignalD std logic vector 3downto0 Signalsel std logic vector 2downto0 Signalseg std logic vector 6downto0 BEGINConnection BlockBeginselout sel segout 6DOWNTO0 seg segout 7 0 小数点dp 有待改进EndBlockConnection Free Counter Block 计数器 产生扫描信号 有待改进SignalQ STD LOGIC VECTOR 2DOWNTO0 BeginPROCESS CLK 计数器计数BeginIFCLK EventANDCLK 1 thenIFQ 111 thenQ 000 ElseQ Q 1 ENDIF ENDIF ENDPROCESS SEL Q EndBlockFree Counter seven SEGMENT Block BinaryCode Segment7CodeBegin gfedcbaSEG 0111111 WHEND 0ELSE 0000110 WHEND 1ELSE 1011011 WHEND 2ELSE 1001111 WHEND 3ELSE 1100110 WHEND 4ELSE 1101101 WHEND 5ELSE 1111101 WHEND 6ELSE 0000111 WHEND 7ELSE 1111111 WHEND 8ELSE 1101111 WHEND 9ELSE 1111000 WHEND 14ELSE t 1111001 WHEND 15ELSE F 0000000 EndBlockseven SEGMENT data select BlockBeginWITHselSELECTD DB5WHEN 000 DB4WHEN 001 DB3WHEN 010 DB2WHEN 011 DB1WHEN 100 DB0WHENOTHERS EndBlockdata select Enda 实验 二 七段LED显示器设计 要求 每位显示器数据输入由4位开关组合实现做实验前认真书写预习报告按完整格式写实验报告思考题 如果要求每位显示的小数点可选择 如何实现 如果需要245Hz的扫描信号 如何实现 数码转换 数字电路内部 多采用二进制或十六进制 日常用十进制 故需要相互转换常用两种数码转换 二进制换成十进制 BCD码换成七段显示码 输入为0 9 其十位BCD码为0 个位数码 输入 输入为10 15 其十位BCD码为1 个位数码 输入 10 因为有减法运算 输入应定义为UNSIGNED 3DOWNTO0 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL USEIEEE STD LOGIC ARITH ALL USEIEEE STD LOGIC UNSIGNED ALL ENTITYD BCDISPORT A INUNSIGNED 3downto0 BCD0 BCD1 OUTSTD LOGIC VECTOR 3downto0 ENDD BCD ARCHITECTUREaOFD BCDISSignalXC STD LOGIC VECTOR 3DOWNTO0 BEGINPROCESS A BEGINIFA 10THENBCD1 0000 BCD0 STD LOGIC VECTOR A XC STD LOGIC VECTOR A ELSEBCD1 0001 BCD0 A 10 XC STD LOGIC VECTOR A 10 ENDIF ENDPROCESS ENDa 多路开关与解多路开关 多路开关 数据选择器 可以从多组数据来源中选取一组送出应用广泛 例如在输出显示电路中经常利用它制作扫描电路来分别驱动输出装置 以降低功耗 有时也利用数据选择器把两组没有必要同时观察的数据 共享一组显示电路 解多路开关 将一组输入信号传送到地址选择线指定的输出上 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL USEIEEE STD LOGIC ARITH ALL USEIEEE STD LOGIC UNSIGNED ALL ENTITYdemuxISPORT Z INSTD LOGIC VECTOR 3DOWNTO0 S INSTD LOGIC VECTOR 1DOWNTO0 A B C D OUTSTD LOGIC VECTOR 3DOWNTO0 ENDdemux ARCHITECTUREdemux4 behaveOFdemuxIS BEGINPROCESS Z S BEGINAABCD Z ENDCASE ENDPROCESS ENDdemux4 behave 比较器 通常依据两组二进制数码的数值大小来作比较 a b a b a b 应用广泛 从算术的比较 排序 到一般逻辑电路的控制 例如警报器 重量控制 亮度控制 温度控制等 输出信号AGTB A B时 值为1 否则为0 AEQB A B时 值为1 否则为0 ALTB A B时 值为1 否则为0 ARCHITECTUREAOFCOMP1ISBEGINPROCESS RST CLK BEGINIFA BthenAGTB 1 出错ElsifA BthenAEQB 1 ElseALTB 1 ENDIF ENDPROCESS ENDA ARCHITECTUREBOFCOMP1ISBEGINAGTBBELSE 0 AEQB 1 WHENA BELSE 0 ALTB 1 WHENA BELSE 0 ENDB CLK RST失去作用 8位比较器设计 LIBRARYieee USEieee std logic 1164 all ENTITYCOMP1ISPORT A INSTD LOGIC VECTOR 7DOWNTO0 B INSTD LOGIC VECTOR 7DOWNTO0 CLK INSTD LOGIC RST INSTD LOGIC AGTB OUTSTD LOGIC ALTB OUTSTD LOGIC AEQB OUTSTD LOGIC ENDCOMP1 ARCHITECTUREarchOFCOMP1ISBEGINPROCESS RST CLK BEGINIFRST 1 THENAGTBBTHENAGTB 1 AEQB 0 ALTB 0 ELSIFa bTHENAGTB 0 AEQB 1 ALTB 0 ELSEAGTB 0 AEQB 0 ALTB 1 ENDIF ENDIF ENDPROCESS ENDARCH 同步逻辑 可编程逻辑器件有助于进行同步逻辑设计 电路中的存储器件触发器都在同一个时钟操作下工作 寄存器与锁存器同步复位和预置异步复位和预置组合复位和预置 寄存器与锁存器 时钟边沿触发的D触发器时钟电平触发的D锁存器 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYddf logicISPORT d clk INSTD LOGIC q OUTSTD LOGIC ENDddf logic ARCHITECTUREexampleOFddf logicISBEGINPROCESS clk BEGINIF clk eventandclk 1 thenq d ENDIF ENDPROCESS ENDexample 上升沿触发 下降沿触发 clk eventandclk 0 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYddf logicISPORT d clk INSTD LOGIC q OUTSTD LOGIC ENDddf logic ARCHITECTUREexampleOFddf logicISBEGINPROCESS clk d 把d加到敏感表中BEGINIF clk 1 thenq d ENDIF ENDPROCESS ENDexample 电平敏感的D锁存器 低电平敏感 clk 0 正边沿触发D触发器 正电平有效的D锁存器 同步复位和预置 复位和预置实现初始化状态设置 ARCHITECTURErexampleOFddf logicISBEGINPROCESS clk reset BEGINifreset 1 thenq 0 elsif clk eventandclk 1 thenq d ENDIF ENDPROCESS ENDrexample 描写异步预置 IFpreset 1 thenq 1 reset信号的优先级高 同步复位由时钟信号来同步复位信号 ARCHITECTURErexampleOFddf logicISBEGINPROCESS clk BEGINifrising edge clk thenifreset 1 thenq 0 elseq d endif endif ENDPROCESS ENDrexample clk信号的优先级高 异步复位和预置例 用异步复位信号复位部分触发器和置位其它触发器的8位加法计数器libraryIEEE useIEEE std logic 1164 all useIEEE std logic arith all useIEEE std logic unsigned all entitycounter 8isport clk rpst inSTD LOGIC load enable inSTD LOGIC din inSTD LOGIC VECTOR 7downto0 qout bufferSTD LOGIC VECTOR 7downto0 endcounter 8 architecturebehavioralofcounter 8isbeginprocess rpst clk beginifrpst 1 thenqout 00111010 elsif clk eventandclk 1 thenifload 1 thenqout din elsifenable 1 thenqout qout 1 endif endif endprocess endbehavioral 组合复位和预置设计中有时需要两个异步信号 既有异步复位也有异步预置 libraryIEEE useIEEE std logic 1164 all useIEEE std logic arith all useIEEE std logic unsigned all entitycounter 8isport clk grst gpst inSTD LOGIC load enable inSTD LOGIC din inSTD LOGIC VECTOR 7downto0 qout bufferSTD LOGIC VECTOR 7downto0 endcounter 8 architecturebehavioralofcounter 8isbeginprocess grst gpst clk beginifgrst 1 thenqout 0 elsifgpst 1 thenqout 00111010 elsif clk eventandclk 1 thenifload 1 thenqout din elsifenable 1 thenqout qout 1 endif endif endprocess endbehavioral LIBRARYieee USEieee std logic 1164 all useieee std logic unsigned all ENTITYls160ISPORT data instd logic vector 3downto0 clk ld p t clr instd logic count bufferstd logic vector 3downto0 tc outstd logic ENDls160 ARCHITECTUREbehaviorOFls160ISBEGINtc 1 when count 1001 andp 1 andt 1 andld 1 andclr 1 else 0 cale process clk clr p t ld begin if rising edge clk thenif clr 1 thenif ld 1 thenif p 1 thenif t 1 thenif count 1001 thencount 0000 elsecount count 1 endif elsecount count endif elsecount count endif elsecount data endif elsecount 0000 endif endif endprocesscale ENDbehavior 三态及双向接口设计 在电子系统中 三态缓冲器和双向缓冲器是接口电路和总线驱动电路经常用到的器件 三态输出缓冲器可以使该电路在有其它电路使用总线的时候 处于高阻态 不驱动共享总线 即避免总线竞争 双向缓冲器使得该器件接口既可以输入信号 也可以输出信号 即I O接口 三态及双向接口设计 三态门电路单向总线缓冲器双向总线缓冲器 三态门电路 当en 1 时 dout din 当en 0 时 dout Z 高阻 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYtri gateISPORT din en INSTD LOGIC dout OUTSTD LOGIC ENDtri gate ARCHITECTUREzasOFtri gateISBEGINTri gate1 PROCESS din en BEGINIF en 1 THENdout din ELSEdout Z 注意 Z 要大写 ENDIF ENDPROCESS 另一个实现 用并行信号赋值 dout dinWHENen 1 ELSE Z ENDzas 单向总线缓冲器 在微型计算机的总线驱动中经常要用单向总线驱动器 由多个三态门组成 用来驱动地址总线和控制总线 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYtri buf8ISPORT din INStd Logic Vector 7downto0 en INSTD LOGIC dout OUTStd Logic Vector 7downto0 BUS ENDtri buf8 ARCHITECTUREzasOFtri buf8ISBEGINTri buff PROCESS din en BEGINIF en 1 THENdout din ELSEdout ZZZZZZZZ ENDIF ENDPROCESS ENDzas 不能将 Z 值赋予变量 否则不能逻辑综合 Z 和 0 或 1 不能混合使用 但可以分开赋值 如 dout Z001ZZZZ dout 7 Z dout 6downto4 001 dout 3downto0 ZZZZ 双向总线缓冲器 用于在微型计算机的总线驱动中对数据总线的驱动和缓冲 图中双向缓冲器有数据输入端a b 方向控制端dir 选通端en en 1未选中 a b都呈现高阻 en 0选中 如果dir 0 则a b 如果dir 1 则b a LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYtri bigateISPORT a b INOUTStd Logic Vector 7downto0 BUS en INSTD LOGIC dir OUTStd Logic ENDtri bigate ARCHITECTUREtriOFtri bigateISSigalaout bout Std Logic Vector 7down

温馨提示

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

评论

0/150

提交评论