串入并出移位器的设计以及程序.docVIP

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

实验二十三 串入/并出移位寄存器 一、实验目的 根据实验内容中介绍的4位串入/并出移位寄存器的设计方法,设计一个8位串入/并出移位寄存器。 实验源程序是sipo.vhd。 二、实验内容 在这里我们通过一个4位串入/并出移位寄存器设计过程来介绍如何设计串入/并出移位寄存器。 所谓的串入/并出移位寄存器,即输入的数据是一个接着一个有序地进入,输出时则一起送出。 例程代码如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL ; USE IEEE.STD_LOGIC_UNSIGNED.ALL ; ENTITY sipo IS PORT( D_IN :IN STD_LOGIC; CLK :IN STD_LOGIC; D_OUT :OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END sipo; ARCHITECTURE a OF sipo IS SIGNAL Q: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN P1: PROCESS(CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q(0) = D_IN; FOR I IN 1 TO 3 LOOP Q(I) = Q(I-1); END LOOP; END IF; END PROCESS P1; D_OUT =Q ; END a; 仿真结果如图23-1所示。 图23-1 4位串入/并出移位寄存器仿真波形图 上图中输入的数据为“1010”、“0111”两组4位数据。因输入的数据是每次一位依序进入,故输入、输出信号之间有4个CLK时间的延迟。为了过滤中间没用的数据,只读取完整的存储数据,实用上可将取样脉冲的周期设定成CLK脉冲的四倍,也就是说,每经过4个CLK脉冲后再读取数据一次,便能每次读取都得到正确的数据。可见上图有效的输出是A 7。 三、实验连线 输入信号D-IN(代表一位的串行数据输入)和CLK(代表抽样时钟信号),CLK时钟信号接适配器板子上的时钟信号,频率建议取在1Hz左右,D-IN接拨码开关或按键;输出信号有D-OUT0~D-OUT3(代表4位并行数据输出),接发光二极管。 实验二十四 并入/串出移位寄存器 一、实验目的 根据实验内容中介绍的4位并入/串出移位寄存器的设计方法,设计一个8位并入/串出移位寄存器。实验源程序是piso.vhd。 二、实验内容 在这里我们通过一个4位并入/串出移位寄存器设计过程来介绍如何设计并入/串出移位寄存器。 所谓的并入/串出移位寄存器,即输入的数据是整组一次进入,输出时则一个接着一个依序地送出。 例程代码如下: LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; ENTITY PISO IS PORT( DATA_IN :IN STD_LOGIC_VECTOR(7 DOWNTO 0);--Parallel Data Input,8bit CLK :IN STD_LOGIC; --Sync Clock LOAD :IN STD_LOGIC; --Load Data when Input 1 CLR :IN STD_LOGIC; --Convert Enable Signal,Active H DATA_OUT :OUT STD_LOGIC); END PISO; ARCHITECTURE a OF PISO IS SIGNAL Q: STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN P1: PROCESS(CLK,CLR) BEGIN IF CLR=1 THEN Q=(OTHERS=0); ELSIF RISing_edge(CLK) THEN IF LOAD=1 THEN Q=DATA_IN; END IF; IF LOAD=0THEN FOR I IN 1 TO 7 LOOP Q(I) = Q(I-1); END LOOP; END IF; END IF; END PROCESS P1; DATA_OUT = Q(7); END a; 仿真结果如图24-1和24-2所示。 图24-1 4位并入/串出移

您可能关注的文档

文档评论(0)

jgx3536 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档