第4章基本数字逻辑单元设计_第1页
第4章基本数字逻辑单元设计_第2页
第4章基本数字逻辑单元设计_第3页
第4章基本数字逻辑单元设计_第4页
第4章基本数字逻辑单元设计_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

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

文档简介

第四章 基本数字逻辑单元的设计 4 1组合逻辑设计4 1 2三态缓冲器和总线缓冲器 8bit单向总线缓冲器LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYtri buf8ISPORT din INSTD LOGIC VECTOR 7DOWNTO0 dout OUTSTD LOGIC VECTOR 7DOWNTO0 en INSTD LOGIC ENDtri buf8 ARCHITECTUREdata flowOFtri buf8ISPROCESS en din BEGINIF en 1 THENdout din ELSEdout ZZZZZZZZ ENDIF ENDPROCESS ENDdata flow Endin 0 din 1 din 2 din 3 din 4 din 5 din 6 din 7 dout 0 dout 1 dout 2 dout 3 dout 4 dout 5 dout 6 dout 7 双向总线缓冲器 用VHDL语言描述的双向总线缓冲器 b a LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYdobl tri buf8ISPORT a b INOUTSTD LOGIC VECTOR 7DOWNTO0 dir en INSTD LOGIC ENDdobl tri buf8 ARCHITECTURErtlOFdobl tri buf8ISSIGNALaout bout STD LOGIC VECTOR 7DOWNTO0 BEGINP1 PROCESS a dir en BEGINIF en 0 AND dir 1 THENbout a ELSEbout ZZZZZZZZ ENDIF b bout ENDPROCESSP1 P2 PROCESS b dir en BEGINIF en 0 AND dir 0 THENaout b ELSEaout ZZZZZZZZ ENDIFa aout ENDPROCESSP2 ENDrtl BCD码 段选码译码器 BCD码输入与LED显示器字段的对应关系BCD码数字显示段hgfedcba0000011000000000111111100100102101001000011310110000010041001100101015100100100110610000010011171010011110008100000001001910010000其它11111111 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYseg delISPORT d INSTD LOGICVECTOR 3DOWNTO0 q OUTBIT VECTOR 7DOWNTO0 ENDseg del ARCHITECTUREseg rtlOFseg delISBEGINCASEdISWHEN 0000 qqqq 10110000 WHEN 0100 qqqqqqq 11111111 ENDCASE ENDseg rtl 4 1 4运算器的设计 一位全加器的设计 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYfull adderISPORT a b ci INSTD LOGIC sum cout OUTSTD LOGIC ENDfull adder ARCHITECTURErtlOFfull adderISBEGINsum aXORbXORci cout aANDb OR aANDci OR bANDci ENDrtl 4位串行进位加法器 S0S1S2S3CO CIA0B0A1B1A2B2A3B3 S0 S1 S3 Sn 1 cout CIA 0 n 1 B 0 n 1 N位超前进位加法器 超前进位加法器 各位加法器产生进位的逻辑表达式为 定义为进位生成函数 定义为进位传递函数 则 全加器的各位和为 4位超前进位加法器 LIBRARYIEEE USEIEEESTD LOGIC 1164 ALL ENTITYadder4ISPORT a b INSTD LOGIC VECTOR 3DOWNTO0 ci INSTD LOGIC sum OUTSTD LOGIC VECTOR 3DOWNTO0 cout OUTSTD LOGIC ENDadde4r ARCHITECTURErtl adder4OFadder4ISSIGNALg p c STD LOGIC VECTOR 3DOWNTO0 BEGINp 0 a 0 ORb 0 p 1 a 1 ORb 1 p 2 a 2 ORb 2 g 0 a 0 ANDb 0 g 1 a 1 ANDb 1 g 2 a 2 ANDb 2 g 3 a 3 ANDb 3 c 0 g 0 OR p 0 ANDci c 1 g 1 OR p 1 ANDg 0 OR p 1 ANDp 0 ANDci c 2 g 2 OR p 2 ANDg 1 OR p 2 ANDp 1 ANDg 0 OR p 2 ANDp 1 ANDp 0 ANDci c 3 g 3 OR p 3 ANDg 2 OR p 3 ANDp 2 ANDg 1 OR p 3 ANDp 2 ANDp 1 ANDg 0 OR p 3 ANDp 2 ANDp 1 ANDp 0 ANDci cout c 3 sum 0 a 0 XORb 0 XORci sum 1 a 1 XORb 1 XORc 0 sum 2 a 2 XORb 2 XORc 1 sum 3 a 3 XORb 3 XORc 2 ENDrtl adder4 2 移位器 8bit移位器 D7D6D5D4D3D2D1D0 d7d6d5d4d3d2d1d0 右移 d0 左移 d7d6d5d4d3d2d1d0 d7d6d5d4d3d2d1d0 d7 8bit移位器的VHDL程序 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYshifterISPROT data in INSTD LOGIC VECTOR 7DOWNTO0 sr sl ir il INSTD LOGIC data out OUTSTD LOGIC VECTOR 7DOWNTO0 ENDshifter ARCHITECTUREAlgOFshifterISBEGINPROCESS sr sl data in ir il VARIABLEcon STD LOGIC VECTOR 0TO1 BEGINcon sr 3 求补器 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL USEIEEE STD LOGIC ARITH ALL USEIEEE STD LOGIC UNSIGNED ALL ENTITYcomplementISPORT a INSTD LOGIC VECTOR 7DOWNTO0 b UTSTD LOGIC VECTOR 7DOWNTO0 ENDcomplement ARCHITECTURErtlOFcomplementISBEGINb NOTa 00000001 ENDrtl 4 乘法器 部分积右移8bit乘法器的设计 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL USEIEEE STD LOGIC ARITH ALL USEIEEE STD LOGIC UNSIGNED ALL ENTITYmultISPORT ai bi INSTD LOGIC VECTOR 7DOWNTO0 Product OUTSTD LOGIC VECTOR 15DOWNTO0 done OUTSTD LOGIC ENDmult ARCHITECTUREshift multOFmultISBEGINPROCESS ai bi VARIABLEa b m STD LOGIC VECTOR 8DOWNTO0 VARIABLEcount INTEGER BEGINa 0 WHILEcount 8LOOPIFa 0 1 THENm m bi ENDIF a m 0 4 1 5算术逻辑运算单元 本例是一个8bit的ALU 能够完成8种运算 即加 add 带进位加 addc 减sub 带借位减法 subc 逻辑非 与 或和逻辑异或 alucoder程序包定义指令码 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL PACKAGEalucoderISCONSTANTadd STD LOGIC VECTOR 2DOWNTO0 000 CONSTANTaddc STD LOGIC VECTOR 2DOWNTO0 001 CONSTANTsub STD LOGIC VECTOR 2DOWNTO0 010 CONSTANTsubc STD LOGIC VECTOR 2DOWNTO0 011 CONSTANTnot STD LOGIC VECTOR 2DOWNTO0 100 CONSTANTand STD LOGIC VECTOR 2DOWNTO0 101 CONSTANTor STD LOGIC VECTOR 2DOWNTO0 110 CONSTANTxor STD LOGIC VECTOR 2DOWNTO0 111 ENDalucoder ALU运算模块设计 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL USEIEEE NUMERIC STD ALL USEIEEE STD LOGIC ARITH ALL USEIEEE STD LOGIC UNSICNED ALL USEWORK alucoder ALL ENTITYaluISPORT s INSTD LOGIC VECTOR 7DOWNTO0 cy INSTD LOGIC alu comand INSTD LOGIC VECTOR 2DOWNTO0 Acc INOUTSTD LOGIC VECTOR 7DOWNTO0 cout over BUFFERSTD LOGIC ENDalu ARCHITECTUREalgOFaluISSIGNALr1 s1 f1 STD LOGIC VECTOR 8DOWNTO0 BEGINr1 0 PROCESS r1 s1 cy alu comand BEGINCASEalu comandIS WHENadd f1IFcy 0 THENf1f1IFcy 0 THENf1f1f1f1f1f1 ENDCASE ENDPROCESS Acc f1 7DOWNTO0 cout f1 8 over f1 8 XORf1 7 ENDalu 4 2时序逻辑电路设计4 2 1触发器 1 D触发器LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYdffISPORT d clk INSTD LOGIC q OUTSTD LOGIC ENDdff ARCHITECTURErtl ifOFdffISBEGINPROCESS clk BEGIN IF clk EVENT ANDclk 1 THENq d ENDIF ENDPROCESS ENDrtl if 结构体的另一种描述如下 ARCHITECTURErtl waitOFdffISBEGINPROCESSBEGINWAITUNTILclk EVENTANDclk 1 q d ENDPROCESS ENDrtl wait 4 2 3寄存器 D0 D7 8位并行数据输入端 SI 串行数据输入端 Q7 串行数据输出端 Q0 Q6 内部寄存器数据输出端 clk 时钟 ckin 时钟信号禁止 只有当其无效时 移位寄存器才在时钟的触发下进行移位操作 S L 移位 shift 装入 load 当此端为高电平时 可执行移位操作 当此端为低电平时 读入D0 D7端的并行数据 CLR 异步清零 串 并入 串出移位寄存器 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYshifterISPORT clr si ckin clk INSTD LOGIC d INSTD LOGIC VECTOR 7DOWNTO0 q OUTSTD LOGIC sl INBIT ENDshifter ATCHITECTURErtl shifterOFshifterISSIGNALtemp8 STD LOGIC VECTOR 7DOWNTO0 BEGIN PROCESS clr sl ckin clk IF clr 0 THENtemp8 00000000 q temp8 7 ELSIF clk EVENT AND clk 1 AND ckin 0 THENIF sl 0 THENtemp8 d 装入数据q d 7 ELSEq temp8 7 temp8 7 temp8 6 temp8 6 temp8 5 temp8 5 temp8 4 temp8 4 temp8 3 temp8 3 temp8 2 temp8 2 temp8 1 temp8 1 temp8 0 temp8 0 si ENDIF ENDIF ENDPROCESS ENDrtl shifter 4 2 4计数器 8位异步计数器的设计 计数器的顶层设计 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYriplecountISPORT clk clr INSTD LOGIC count OUTSTD LOGIC VECTOR 7DOWNTO0 ENDriplecount ARCHITECTURErtl riplecountOFriplecountISSIGNALcount in STD LOGIC VECTOR 8DOWNTO0 COMPONENTdfftPORT clk clr d INSTD LOGIC Q OUTSTD LOGIC Qn BUFFERSTD LOGIC ENDCOMPONENT 调用当前库中的同名实体作为元件BEGINcount in 0 count in i clr clr d count in i 1 Q count i Qn count in i 1 ENDGENERATE ENDrt riplecountl 单个触发器性能描述LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYdfftISPORT clk clr d INSTD LOGIC Q OUTSTD LOGIC Qn BUFFERSTD LOGIC ENDdfft ARCHITECTURErtldOFdfftISBEGIN PROCESS clk clr BEGINIF clr 0 THENQ 0 Qn 1 ELSIF clk EVENTANDclk 1 THENQ d Qn NOTd ENDIF ENDPROCESS ENDrtld 4 3存储器4 3 1概述 存储器单元实际上是时序逻辑电路的一种 按存储器的使用类型可分为只读存储器 ROM 和随机存取存储器 RAM 两者的功能有较大的区别 因此在描述上也有所不同 存储器是许多存储单元的集合 按单元号顺序排列 每个单元由若干二进制位构成 以表示存储单元中存放的数值 这种结构和数组的结构非常相似 故在VHDL语言中 通常由数组描述存储器 TYPEmemoryISARRAY INTEGERRANGE OFINTEGER TYPEwordISSTD LOGIC VECTOR k 1DOWNTO0 TYPEmemoryISARRAY 0TOw 1 OFword 4 3 3随机存储器RAM LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL USEIEEE STD LOGIC ARITH ALL ENTITYram4kISGENERIC k INTEGER 8 w INTEGER 12 rd del wr del TIME PORT WR RD CS INSTD LOGIC Adr INSTD LOGIC VECTOR w 1DOWNTO0 D INOUTSTD LOGIC VECTOR k 1DOWNTO0 ENDram4k WRRDCSAdr 11 0 Dout 7 0 ARCHITECTUREbehavram4kOFram4kISTYPEmemoryISARRAY 0TO2 w 1 OFSTD LOGIC VECTOR k 1DOWNTO0 SIGNALsram memory SIGNALAdr in INTEGER BEGINAdr in CONV INEGER Adr 位矢量转换成整数PROCESS WR RD CS BEGIN IFCS 0 THENIFRD 0 THEND sram Adr in AFTERrd del ELSIFWR 0 THENsram Adr in DAFTERwr del ENDIF ELSED OTHERS Z AFTERrd del ENDIF ENDPROCESS ENDbehav 4 3 2只读存储器ROM 在用VHDL语言描述ROM时 ROM的内容应在仿真时先读到ROM中 这就是ROM的初始化 存储器的初始化要依赖于外部文件的读取 即由TEXTIO对ROM进行初始化 下面是对ROM进行初始化的实例 VARIABLEstartup BOOLEAN TRUE VARIABLEl LINE LINE是在TEXTIO程序包定义的存取类型VARIABLEj INTEGER VARIABLErom memory FILEromin TEXTISIN rom2k in TEXT是在TEXTIO程序包定义的文件类型 初始化程序 IFstartupTHENFORjINrom RANGELOOP 利用数据区间属性函数获得数组的上下限READLINE romin l 从文件romin中读入一行放入l中 READ l rom j 从l中读入一个数据放入rom中ENDLOOP ENDIF G1G2Adr 11 0 Dout 7 0 只读存储器ROM的VHDL程序 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL USEIEEE STD LOGIC ARITH ALL USESTD TEXTIO ALL ENTITYrom4kISPORT G1 G2 INSTD LOGIC Adr INSTD LOGIC VECTOR 11DOWNTO0 dout OUTSTD LOGIC VECTOR 7DOENTO0 ENDrom4k ARCHITECTUREbehav rom4kOFrom4kISTYPEwordISSTD LOGIC VECTOR 7DOWNTO0 TYPEmemoryISARRAY 0TO4095 OFword SIGNALadr in INTEGERRANGE0TO4095 VARIBLErom memory VARIBLEstartup BOOLEAN TURE VARIBLEl LINE VARIBLEj INTEGER FILEromin TEXTISIN rom2k in 文件类说明 BEGINPROCESS G1 G2 BEGIN IFstartupTHENFORjINrom RANGELOOPREADLINE romin l READ l rom j ENDLOOP startup FALSE ENDIF adr in CONV INTEGER Adr 将位矢量转换成整数 IF G1 1 ANDG2 1 THENdout rom adr in ELSEdout ZZZZZZZZ ENDIF ENDPROCESS ENDbehav rom2k 4 3 4先进后出堆栈 先进后出堆栈是处理程序中断的常用数据结构 其数据存放结构和RAM是一致的 但存储方式有所不同 先进后出堆栈由2个功能块组成 即存储器体和堆栈指针SP 进堆时SP 1 SP指向下一个存储单元 出堆时SP 1 SP 并把SP所指示的存储单元的内容输出 din 7 0 pushpopclkreset Dout 7 0 256字节先进后出堆栈的VHDL程序 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL USEIEEE STD LOGIC ARITH ALL USEIEEE STD LOGIC UNSIGNED ALL ENTITYstackISGENERIC w INTEGER 256 k INTEGER 8 PORT clk reset push pop INSTD LOGICdin INSTD LOGIC VECTOR k 1DOWNTO0 dout OUTSTD LOGIC VECTOR k 1DOWNTO0 ENDstack ARCHITECTUREbehav stackOFstackISTYPEmemoryISARRAY 0TOw 1 OFSTD LOGIC VECTOR k 1DOWNTO0 SIGNALram MEMORY SIRNALsp INTEGERRANGE0TOw 1 BEGINdout ram sp P1 PROCESS clk BEGINIF clk EVENTANDclk 1 THENIF push 0 THENram sp din ENDIF ENDIF ENDPROCESSP1 数据堆栈写 P2 PROCESS clk reset BEGINIF reset 1 THENsp 0 ELSIF clk EVENTANDclk 0 ANDpush 0 THENsp sp 1 在clk的后沿sp 1ElSIF clk EVENTANDclk 1 ANDpop 0 THENsp sp 1 sp指针修改ENDIF ENDPROCESSP2 ENDbehav stack 加减计数器操作 4 4有限状态机 有限状态机是时序电路的通用模型 任何时序电路都可以表示为有限状态机 对于大部分数字电子系统 都可以划分为控制单元和数据单元两个组成部分 控制单元的主体是一个有限状态机 它接收外部信号和数据单元产生的状态的信息 产生各种控制信号 决定何时进行何种数据处理 有限状态机分为两类 Moore型和Mealy型 次态逻辑 状态寄存器 输出逻辑 输入 次态 现态 输出 状态机的设计步骤 定义状态机的各状态 适当地确定状态机的工作状态 是状态机设计的基础 需要充分利用设计者的设计经验 建立状态转换图 构造状态转换图时 通常从一个比较容易的状态开始 例如系统的初始状态 复位状态或空闲状态等 都是很好的起始状态 为每个状态标出转换的条件 相应的输入 输出信号 建立状态机进程 在VHDL程序中 通常用进程描述有限状态机 由于次态是现态及输入信号的函数 因此 往往将现态和输入信号作为进程的敏感信号 进程中定义状态的转移 所有的状态均可表达为CASE WHEN结构中的一条CASE语句 利用CASEWHEN语句IF THEN ELSE语句实现状态的转移 存储器控制器的设计 存储器控制器的输入信号是微处理器的

温馨提示

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

评论

0/150

提交评论