使用FPGA实现连0检测器

本文介绍了如何设计一个用于检测二进制数据连0个数的电路,使用标准库并实现了一个通用的连0检测器。通过改变参数n,适应不同长度的数据。仿真结果显示了其功能的有效性,鼓励读者提问交流。
摘要由CSDN通过智能技术生成

介绍

我们要实现的连0检测器是指,一串二进制数据从高位开始到第一个变成1中间连0的个数。


设计文件

library ieee;
use ieee.std_logic_1164.all;
entity zeros is
    generic(n : integer := 16); 
    port( inp : in std_logic_vector(n-1 downto 0);
            outp : out integer range 0 to n);
end zeros;
architecture zeros of zeros is 
begin
    process(inp)
        variable count : integer range 0 to n;
    begin
        count := 0;
        for i in inp'range loop
            case inp(i) is
                when '0' => count := count + 1;
                when others => exit;
            end case;
        end loop;
        outp <= count;
    end process;
end architecture;


测试文件

library ieee;
use ieee.std_logic_1164.all;
entity tb_zeros is
    generic(n : integer := 16); 
end entity;
architecture zeros of tb_zeros is 
    component zeros is
        port( inp : in std_logic_vector(n-1 downto 0);
            outp : out integer range 0 to n);
    end component;
    signal inp : std_logic_vector(n-1 downto 0);
    signal outp : integer range 0 to n;
    begin
        dut : zeros
        port map(inp,outp);
        process
        begin
            inp <= "0000001110000010";
            wait for 20ns;
            inp <= "0000000010000010";
            wait for 20ns;
        end process;
end architecture;


仿真结果

从仿真结果中可以看出,我们可以检测到一串数据从开始连0的个数。通过改变n的大小就可以检测不同长度的二进制数据连0的个数了。


结语

有什么问题大家留言哈。

  • 16
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值