版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第7章章 CPLDFPGA设计实践设计实践(2) 1) 寄存寄存(锁存锁存)器器 寄存器用于寄存一组二值代码,广泛用于各类数寄存器用于寄存一组二值代码,广泛用于各类数字系统。因为一个触发器能储存字系统。因为一个触发器能储存1位二值代码,所以用位二值代码,所以用N个触发器组成的寄存器能储存一组个触发器组成的寄存器能储存一组N位的二值代码。位的二值代码。下面给出一个下面给出一个8位寄存器的位寄存器的VHDL描述。描述。寄存器和移位寄存器寄存器和移位寄存器 【例【例7.17】 8位寄存器位寄存器 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY R
2、EG IS PORT(D:IN STD_LOGIC_VECTOR(0 TO 7); CLK:IN STD_LOGIC; Q:OUT STD_LOGIC_VECTOR(0 TO 7); END ENTITY REG; ARCHITECTURE ART OF REG IS BEGIN PROCESS(CLK) BEGIN IF(CLKEVENT AND CLK=1)THEN Q=D; END IF; END PROCESS; END ARCHITECTURE ART; 移位寄存器除了具有存储代码的功能以外,还具有移移位寄存器除了具有存储代码的功能以外,还具有移位功能。所谓移位功能,是指寄存器里存储
3、的代码能位功能。所谓移位功能,是指寄存器里存储的代码能在移位脉冲的作用下依次左移或右移。因此,移位寄在移位脉冲的作用下依次左移或右移。因此,移位寄存器不但可以用来寄存代码,还可用来实现数据的串存器不但可以用来寄存代码,还可用来实现数据的串/并转换、数值的运算以及数据处理等。并转换、数值的运算以及数据处理等。 移位寄存器可以由多位触发器首尾连接而成移位寄存器可以由多位触发器首尾连接而成, 即前一即前一级的输出作为后一级的输入级的输出作为后一级的输入, 所有的触发器共用同一所有的触发器共用同一时钟和清零时钟和清零/置位信号。置位信号。 2)移位寄存器移位寄存器 例例7.18用用VHDL描述一个具有
4、预置数、同步复位、左描述一个具有预置数、同步复位、左移和右移功能的移和右移功能的8位移位寄存器。输入时钟信号为位移位寄存器。输入时钟信号为clk,复位控制信号为复位控制信号为reset,控制左移、右移和预置数输入,控制左移、右移和预置数输入信号为信号为mode,8位输入数据信号为位输入数据信号为data,左移输入数,左移输入数据信号为据信号为shift_left,右移输入数据信号为,右移输入数据信号为shift_right,8位输出数据信号为位输出数据信号为qout。当。当mode=01时,实现右移移时,实现右移移位功能;当位功能;当mode=10时,实现左移移位功能;当时,实现左移移位功能;
5、当mode=11时,实现将时,实现将8位输入数据信号输入到位输入数据信号输入到8位移位位移位寄存器。寄存器。 【例【例7.18】具有预置数、同步复位、左移和右移功能的】具有预置数、同步复位、左移和右移功能的8位移位位移位寄存器。寄存器。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY SHIFTER IS PORT(DATA:IN STD_LOGIC_VECTOR(7 DOWNTO 0); SHIFT_LEFT: IN STD_LOGIC; SHIFT_RIGHT:IN STD_LOGIC; RESET:IN STD_LOGIC; MODE:
6、IN STD_LOGIC_VECTOR(1 DOWNTO 0); QOUT:BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0); END ENTITY SHIFTER; ARCHITECTURE ART OF SHIFTER IS BEGIN PROCESS BEGIN WAIT UNTIL(RISING_EDGE(CLK); IF(RESET=1)THEN QOUTQOUTQOUTQOUTNULL; END CASE; END IF; END PROCESS; END ARCHITECTURE ART; 【例【例7.19】具有左移和右移功能的】具有左移和右移功能的8位串行
7、移位寄存器。其中位串行移位寄存器。其中din为移位数据输入端口,为移位数据输入端口,dir移位方向控制端口,移位方向控制端口,op数据输出端口。数据输出端口。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY REG IS PORT(CLK,DIN,DIR: IN STD_LOGIC; OP:BUFFER STD_LOGIC); END ENTITY REG; ARCHITECTURE ART OF REG IS SIGNAL Q:STD_LOGIC_VECTOR(7 DOWNT
8、O 0); BEGIN PROCESS BEGIN WAIT UNTIL(RISING_EDGE(CLK); IF(DIR=0)THEN Q(0)=DIN; -左移左移 FOR I IN 1 TO 7 LOOP Q(I)=Q(I-1); END LOOP; ELSE Q(7)=DIN; -右移右移 FOR I IN 1 TO 7 LOOP Q(I-1)=Q(I); END LOOP; END IF; END PROCESS;OP=Q(7) WHEN DIR=0 ELSE Q(0);END ART; 锁存器在接口电路中用得很多锁存器在接口电路中用得很多, 其构造是多个共用其构造是多个共用时钟和复
9、位时钟和复位/置位端但数据输入、置位端但数据输入、 输出各自独立的输出各自独立的 D 触发器。触发器。 其描述与移位寄存器相似。其描述与移位寄存器相似。 3)多位锁存器多位锁存器例例 7 .20 带输出选通的带输出选通的8位锁存器位锁存器,oe为选通控制端为选通控制端(低电平低电平有效有效)。 LIBRARY IEEE ; USE IEEE. STD-LOGIC-1164. ALL ; ENTITY latch8 IS PORT (oe: IN STD-LOGIC ; d-in: IN STD-LOGIC-VECTOR(7 DOWNTO 0); q-out: OUT STD-LOGIC-VEC
10、TOR(7 DOWNTO 0) ) ; END latch8 ; ARCHITECTURE rtl OF latch8 IS BEGIN PROCESS (clk) BEGIN IF oe= 0 THEN q-out = 9 THEN cnt := 0; ELSE cnt := cnt + 1; END IF; END IF; q-out = cnt; IF cnt = 9 THEN co = 1; ELSE co = 0; END IF; END PROCESS;END behav; 在例在例7.21中中, 在进程中定义变量在进程中定义变量cnt的作用主要是存的作用主要是存储计数器的现态用于
11、判断和赋值储计数器的现态用于判断和赋值, 因为端口因为端口q-out(即(即计数值)只能输出而不能回读。计数值)只能输出而不能回读。 后面的几个例子也都后面的几个例子也都采取了同样的做法。实际上采取了同样的做法。实际上, 该描述可推广至任意模值该描述可推广至任意模值的二进制加法计数器的二进制加法计数器, 只需根据要求的模值来修改变量只需根据要求的模值来修改变量cnt和和PORT语句中语句中q-out定义的右边界即可。定义的右边界即可。 例例7.22 修改上例中的程序所得到的异步清零、修改上例中的程序所得到的异步清零、 模模60同步二进制可逆计数器描述同步二进制可逆计数器描述, up-down
12、=1时执行加法时执行加法计数计数, up-down =0时执行减法计数。其中计数输入信时执行减法计数。其中计数输入信号为号为clk,清零控制信号为,清零控制信号为clear(低电平有效低电平有效),计数允,计数允许控制信号为许控制信号为enable(高电平有效高电平有效)。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY counter_M60 IS PORT ( clk, clear, enable, up_down: IN BIT; q_out: OUT INTEGER R
13、ANGE 0 TO 63 ); END counter_M60; ARCHITECTURE behav OF counter_M60 IS BEGIN PROCESS (clkPROCESS (clk, clear), clear)VARIABLE cntVARIABLE cnt : INTEGER RANGE 0 TO 63; : INTEGER RANGE 0 TO 63; BEGIN BEGIN IF clear =0 THEN IF clear =0 THEN cnt cnt := 0; := 0; ELSIF (clkEVENT AND clk ELSIF (clkEVENT AND
14、 clk =1) THEN =1) THEN IF enable =1 THEN IF enable =1 THEN IF (up_down IF (up_down =1) THEN =1) THEN if cnt=59 then cnt if cnt=59 then cnt:=0;:=0; else cnt := cnt else cnt := cnt + 1; + 1; end if; end if; ELSE ELSE if cnt=0 then cnt if cnt=0 then cnt:=59;:=59; else cnt := cnt else cnt := cnt - 1; -
15、1; end if; end if; END IF; END IF; END IF; END IF; END IF; END IF; q_out = cnt q_out = cnt; ; END PROCESS; END PROCESS;END behavEND behav; ; 【例【例7.23】是一个模为】是一个模为60,具有异步复位、同步置数功能和计数,具有异步复位、同步置数功能和计数s使能的使能的8421BCD码计数器。码计数器。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; EN
16、TITY CNTM60 IS PORT(CI:IN STD_LOGIC; -计数控制计数控制 NRESET:IN STD_LOGIC; -异步复位控制异步复位控制 LOAD:IN STD_LOGIC; -置数控制置数控制 D:IN STD_LOGIC_VECTOR(7 DOWNTO 0); CLK:IN STD_LOGIC; CO:OUT STD_LOGIC; -进位输出进位输出 QH:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0); -输出高输出高4位位 QL:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0); -输出低输出低4位位 END EN
17、TITY CNTM60; ARCHITECTURE ART OF CNTM60 IS BEGIN CO=1WHEN(QH=0101AND QL=1001AND CI=1)ELSE0; -进位输出的产生进位输出的产生 PROCESS(CLK,NRESET) IS BEGIN IF(NRESET=0)THEN -异步复位异步复位 QH=0000; QL=0000;ELSIF(CLKEVENT AND CLK=1)THEN -同步置数同步置数 IF(LOAD=1)THEN QH=D(7 DOWNTO 4); Q L=D(3 DOWNTO 0); ELSIF(CI=1)THEN -模模60的实现的实现
18、 IF(QL=“1001”)THEN QL=0000; IF(QH=“0101”)THEN QH=0000; ELSE -计数功能的实现计数功能的实现 QH=QH+1; END IF; ELSE QL= 9 THEN count := 0 ; f-out = 0; ELSE count := count +1; IF count 5 THEN f-out = 0; ELSE f-out = 1; END IF; END IF; END IF ; END PROCESS ;END rtl ; 在数字信号的传输和数字系统的测试中,有时需要用在数字信号的传输和数字系统的测试中,有时需要用到一组特定的
19、串行数字信号。产生序列信号的电路称为序到一组特定的串行数字信号。产生序列信号的电路称为序列信号发生器。列信号发生器。序列信号发生器序列信号发生器 【例【例7.25】 “01111110”序列发生器序列发生器 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY SENQGEN IS PORT(CLK,CLR,CLOCK:IN STD_LOGIC; ZO:OUT STD_LOGIC); END ENTITY SENQGEN;A
20、RCHITECTURE ART OF SENQGEN IS SIGNAL COUNT:STD_LOGIC_VECTOR(2 DOWNTO 0); SIGNAL Z:STD_LOGIC :=0; BEGIN PROCESS(CLK,CLR) IS -注意各进程间的并行性注意各进程间的并行性 BEGIN IF(CLR=1)THEN COUNT=000; ELSIF(CLK=1AND CLKEVENT)THEN IF(COUNT=111)THEN COUNT=000; ELSE COUNTZZZZZZZZ=0; END CASE;END PROCESS;PROCESS(CLOCK,Z) IS BEG
21、IN -消除毛刺的锁存器消除毛刺的锁存器 IF(CLOCKEVENT AND CLOCK=1)THEN ZO=Z; END IF; END PROCESS;END ARCHITECTURE ART;状态机的状态机的VHDLVHDL设计设计 状态机的基本结构和功能状态机的基本结构和功能 状态机是一类很重要的时序电路,是许多数字电路的核心部件。状态机是一类很重要的时序电路,是许多数字电路的核心部件。状态机的一般形式如下图所示。状态机的一般形式如下图所示。 状态译码器状态寄存器输出译码器状态输出反馈输入组合逻辑 状态机的基本操作有两种:状态机的基本操作有两种: (1) 状态机内部状态转换。状态机的下
22、一状态由状状态机内部状态转换。状态机的下一状态由状态译码器根据当前状态和输入条件决定。态译码器根据当前状态和输入条件决定。 (2) 产生输出信号序列。输出信号由输出译码器根产生输出信号序列。输出信号由输出译码器根据当前状态和输入条件决定。据当前状态和输入条件决定。 在产生输出的过程中,由是否使用输入信号可以在产生输出的过程中,由是否使用输入信号可以确定状态机的类型。两种典型的状态机是摩尔确定状态机的类型。两种典型的状态机是摩尔(MOORE)状态机和米立状态机和米立(MEALY)状态机。状态机。 一般状态机的一般状态机的VHDL设计设计 为了能获得可综合的,高效的为了能获得可综合的,高效的VHD
23、L状态机描述,状态机描述,建议使用建议使用枚举类数据类型枚举类数据类型来定义状态机的状态,并使来定义状态机的状态,并使用多进程方式来描述状态机的内部逻辑。用多进程方式来描述状态机的内部逻辑。 枚举数据类型是一种特殊的数据类型,即把类型中的各个枚举数据类型是一种特殊的数据类型,即把类型中的各个元素都列举出来。其书写格式为:元素都列举出来。其书写格式为: TYPE 数据类型名数据类型名IS(元素);(元素);例如:例如: TYPE PCstate IS (idle,busy,write,read,backoff); SIGNAL a,b:PCstate; TYPE logic IS (1,Z,U,
24、0); SIGNAL s:logic;Moore状态机设计状态机设计 Moore状态机的特性是其输出信号永远伴随着现状同步变化,状态机的特性是其输出信号永远伴随着现状同步变化,一种状态必定对应着某一特定输出。一般是以状态变迁流程图一种状态必定对应着某一特定输出。一般是以状态变迁流程图(State diagram)来表示此数字系统的行为,如下图所示。来表示此数字系统的行为,如下图所示。 组合式状态位译码组合式状态位译码Architecture arch Of moorel isType states is(s0,s1,s2,s3,s4); signal state:states; begin m
25、oore:process(clk,rst) begin if rst=1 then stateif inp=x2 then state =s1; else state if inp=x4 then state=s2; else stateStateif inp=xA then State=s4; else stateif inpx9 then state=s1; elsif inp=x9then State=s0; else State=S4; end if; end case; end if; end process; 状态机实际应用举例状态机实际应用举例 -AD574-AD574控制器的设计控制器的设计RCSTATUSD11.0AD574启动时序启动时序20usZ/CS对对AD574初始化初始化st0st1st2st3st4打开片选,启打开片选,启动动12位转换位转换采样周期采样周期中等待中等待STATUS=1 :正在转换!正在转换!STATUS=0 :转换结束!转换结束!12位转换数位转换数据输出有效据输出有效由由 LOCK 发发数据锁存信号数据锁存信号PROCESSREG时序进程PROCESSCOM组合进程PROCESSLATCH锁
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年粮食收购与销售协议样本
- 安徒生童话读后感集锦
- 生活服务平台开发服务合同
- 2025版节水灌溉农业种植合作合同书样本3篇
- 二零二五年度国际贸易实训报告编制与质量控制协议4篇
- 二零二五年度废电池回收与资源化利用合同3篇
- 2024年船运鲜活货物合同
- 2025年度牛羊肉冷链配送与售后服务合同范本2篇
- 西游记中孙悟空的成长历程读后感
- 电影拍摄合作合同
- Python开发工程师招聘笔试题及解答(某大型国企)
- 妊娠期高血糖诊治指南
- 2024压铸机安全技术规范
- 绵阳小升初数学试题-(绵中英才学校)
- 数据中心数据中心建设项目电气工程设计方案
- 广东省深圳市2022年中考英语真题(含答案)
- 四川省泸州市(2024年-2025年小学四年级语文)统编版期末考试(上学期)试卷及答案
- 4 地表流水的力量 (教学设计)-2023-2024学年 六年级下册科学人教版
- 临床弥漫性特发性骨肥厚症(DISH)影像表现
- 【会议系统的设计与实现7300字(论文)】
- 中国慢性冠脉综合征患者诊断及管理指南2024版解读
评论
0/150
提交评论