使用FPGA实现桶形移位寄存器

这篇具有很好参考价值的文章主要介绍了使用FPGA实现桶形移位寄存器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

介绍

我给大家介绍的是逻辑/算术左移移位寄存器。实现的功能是根据输入信号shift将输入信号进行移位,高位移除,低位补0。我建立的工程是由3个独立的桶形移位寄存器组成的。


设计文件

library ieee;
use ieee.std_logic_1164.all;
entity barrel is 
    port( inp : in std_logic_vector(7 downto 0);
            shift : in std_logic_vector(2 downto 0);
            outp : out std_logic_vector(7 downto 0));
end entity;
architecture behavier of barrel is
begin
    process(inp,shift)
        variable temp1 : std_logic_vector(7 downto 0);
        variable temp2 : std_logic_vector(7 downto 0);
    begin
        if(shift(0) = '0')then
            temp1 := inp;
        else
            temp1(0) := '0';
            for i in 1 to inp'high loop
                temp1(i) := inp(i-1);
            end loop;
        end if;
        
        if(shift(1) = '0')then
            temp2 := temp1;
        else
            for i in 0 to 1 loop
                temp2(i) := '0';
            end loop;
            for i in 2 to inp'high loop
                temp2(i) := temp1(i-2);
            end loop;
        end if;
        
        if(shift(2) = '0')then
            outp <= temp2;
        else
            for i in 0 to 3 loop
                outp(i) <= '0';
            end loop;
            for i in 4 to inp'high loop
                outp(i) <= temp2(i-4);
            end loop;
        end if;
        
    end process;
end architecture;


测试文件

library ieee;
use ieee.std_logic_1164.all;
entity tb_barrel is 
    
end entity;
architecture behavier of tb_barrel is
    component barrel is
        port( inp : in std_logic_vector(7 downto 0);
            shift : in std_logic_vector(2 downto 0);
            outp : out std_logic_vector(7 downto 0));
    end component;
    signal inp,outp : std_logic_vector(7 downto 0);
    signal shift : std_logic_vector(2 downto 0);
begin
    dut : barrel
    port map(inp,shift,outp);
    process
        variable temp1 : std_logic_vector(7 downto 0);
        variable temp2 : std_logic_vector(7 downto 0);
    begin
        inp <= "01101011";
        shift <= "000";
        wait for 20ns;
        shift <= "001";
        wait for 20ns;
        shift <= "010";
        wait for 20ns;
        shift <= "011";
        wait for 20ns;
        shift <= "100";
        wait for 20ns;
        shift <= "101";
        wait for 20ns;
        shift <= "110";
        wait for 20ns;
        shift <= "111";
        wait for 20ns;
    end process;
end architecture;


仿真结果

使用FPGA实现桶形移位寄存器,FPGA学习,fpga开发


结语

我设计的这个桶形移位寄存器是从shift信号的低位进行判断的,从低位到高位的进位依次是1,2,4。我们可以看到8位数据,通过一个位宽位3的shift信号就可以完成8位移位操作了。

过段时间如果尝试做了循环移位寄存器也会更新的。

有什么问题大家留言哈。文章来源地址https://www.toymoban.com/news/detail-861797.html

到了这里,关于使用FPGA实现桶形移位寄存器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA原理与结构(5)——移位寄存器(Shift Registers)

    系列文章目录:FPGA原理与结构(0)——目录与传送门 目录 一、移位寄存器概述 1、基本概念      2、LUT实现移位寄存器 3、移位寄存器的应用 4、移位寄存器的功能 5、移位寄存器结构 6、移位寄存器级连 二、移位寄存器数据流 1、动态读操作(移位长度不固定) 2、静态读

    2024年02月08日
    浏览(32)
  • 北邮22级信通院数电:Verilog-FPGA(10)第十周实验 实现移位寄存器74LS595

    北邮22信通一枚~ 跟随课程进度更新北邮信通院数字系统设计的笔记、代码和文章 持续关注作者 迎接数电实验学习~ 获取更多文章,请访问专栏: 北邮22级信通院数电实验_青山如墨雨如画的博客-CSDN博客 目录 一.代码部分  二.管脚分配 三.实现过程讲解及效果 shift_register.v d

    2024年02月05日
    浏览(51)
  • HDLBits学习笔记——移位寄存器

    为了方便做笔记,从移位寄存器(Shift Registers)这章开始按章节做记录。 1.   4-bit Shift Registers 题目: Build a 4-bit shift register (right shift), with asynchronous reset, synchronous load, and enable. areset: Resets shift register to zero. load: Loads shift register with data[3:0] instead of shifting. ena: Shift right (q[3

    2023年04月08日
    浏览(46)
  • Verilog实现移位寄存器

    Verilog实现8位环形移位寄存器 左移: 环形就是首尾相连 右移: 普通的移位寄存器用for语句实现: 普通左移: tb测试: 图形分析: 双向shift:就是加个判断

    2024年02月11日
    浏览(47)
  • 【FGPA】Verilog:移位寄存器 | 环形计数器 | 4bit移位寄存器的实现 | 4bit环形计数器的实现

      目录 Ⅰ. 理论部分 0x00 移位寄存器(Shift Register) 0x01 环形计数器(Ring Counter)

    2024年02月05日
    浏览(34)
  • 4.3 移位寄存器的实现和应用

    在数字电路中,移位寄存器(英语:shift register)是一种在若干相同时间脉冲下工作的以触发器为基础的器件,数据以并行或串行的方式输入到该器件中,然后每个时间脉冲依次向左或右移动一个比特,在输出端进行输出。这种移位寄存器是一维的,事实上还有多维的移位寄存

    2024年02月10日
    浏览(39)
  • Verilog基础之十一、移位寄存器实现

    目录 一、前言 二、工程设计 ​2.1 工程代码 2.2 综合结果 2.3 仿真结果     移位寄存器SRL在工程中属于使用频率较高个模块,可用于存储数据,实现串并转换;根据数据移动方向可分为左移寄存器,右移寄存器,左移是向数据高位移动,右移是向数据低位移动。  工程中包

    2024年02月11日
    浏览(36)
  • 数字IC前端学习笔记:LSFR(线性反馈移位寄存器)

    相关文章 数字IC前端专栏 https://blog.csdn.net/weixin_45791458/category_12173698.html?spm=1001.2014.3001.5482 引言 LFSR(线性反馈移位寄存器)用于产生可重复的伪随机序列PRBS(Pseudo-Random Binary Sequence),结构包括n级D触发器和一些异或门(或同或门)组成,在每个时钟沿,后级D触发器输出会以

    2024年02月02日
    浏览(34)
  • Verilog学习笔记——时序逻辑(shift register移位寄存器)

    1. 4位移位寄存器  4-bit shift register 2. Left/ right register 左移|右移寄存器(1位)   3. Left/right arithmetic shift by 1 or 8 算数 左移|右移寄存器(1 或8位) 4. 5-bit LFSR 5. 3-bit LFSR   6. 32-bit LFSR   7. Shift register 8. Shift register    9. 3-input LUT  

    2024年02月03日
    浏览(37)
  • 【FPGA】Verilog:时序电路设计 | 自循环移位寄存器 | 环形计数 | 扭环计数 | 约翰逊计数器

    前言: 本章内容主要是演示Vivado下利用Verilog语言进行电路设计、仿真、综合和下载 示例:计数器   ​​ 功能特性: 采用 Xilinx Artix-7 XC7A35T芯片  配置方式:USB-JTAG/SPI Flash 高达100MHz 的内部时钟速度  存储器:2Mbit SRAM   N25Q064A SPI Flash(样图旧款为N25Q032A) 通用IO:Switch :

    2024年02月10日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包