首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏用户7494468的专栏

    Verilog设计实例(2)一步一步实现一个多功能通用计数器

    普通的二进制计数器 电路设计 行为仿真 普通的格雷码计数器 电路设计 行为仿真 LFSR 电路设计 行为仿真 多功能计数器 电路设计 行为仿真 生成语句实现方式 注意事项 写在前面 相关博文[1]博客首页 正文 多功能计数器,英文名为:多功能计数器;所谓多功能,这里包括二进制计数,格雷码计数以及线性反馈移位寄存器(LFSR)三种,本文通过从普通的计数器开始,也就是单个功能的计数器开始,一步一步过渡到多功能计数器 作为对以下相关博文的延伸练习:Verilog设计实例(1)线性反馈移位寄存器(LFSR)[3]FPGA设计心得(8)Verilog中的编译预处理语句[4] 普通的二进制计数器 这个作为开头,不必多说,计数就完事了 end 8: begin r_XNOR = r_LFSR[8] ^~ r_LFSR[6] ^~ r_LFSR[5] ^~ r_LFSR[4]; end 在这里插入图片描述 生成语句实现方式 这里使用生成语句,generate case来实现多功能计数器,我们需要定义一个参数SEL,当SEL为0的时候,输出为LFSR;当SEL为1时,输出为格雷码计数器

    1.7K20发布于 2020-06-29
  • 来自专栏数字IC经典电路设计

    线性反馈移位寄存器LFSR(斐波那契LFSR(多到一型)和伽罗瓦LFSR(一到多型)|verilog代码|Testbench|仿真结果)

    快速导航链接如下: 个人主页链接 1.数字分频器设计 2.序列检测器设计 3.序列发生器设计 4.序列模三检测器设计 5.奇偶校验器设计 6.自然二进制数与格雷码转换 7.线性反馈移位寄存器LFSR 8 LFSR广泛应用于伪随机数生成、伪噪声序列生成、计数器、数据的加密和CRC校验、扰码器/解码器、信号生成和测试等领域,是一种非常有用的数字电路设计技术。 下面对其中的一些典型应用进行介绍。 LFSR计数器:LFSR可用于构建通过随机序列状态进行计数的计数器。 与常见的计数器相比, LFSR计数器具有速度快 、 消耗逻辑门少的特点。 图片 斐波那契LFSR与伽罗瓦LFSR有哪些差异呢? LFSR计数器具有速度快,消耗逻辑门少的特点。伽罗瓦LFSR具有更高的速度,因为两个触发器之间只有一个异或门。 广泛应用于伪随机数生成、伪噪声序列生成、计数器、数据的加密和CRC校验、扰码器/解码器、信号生成和测试等领域,是一种非常有用的数字电路设计技术。

    9.9K70编辑于 2023-05-18
  • 来自专栏数字IC经典电路设计

    九种移位寄存器原理与设计(循环(左、右、双向)移位寄存器、逻辑和算术移位寄存器、串并转换移位寄存器、线性反馈移位寄存器LFSR

    对于计数器法,相比于移位寄存器逐次移位进行拼接,计数器法通过计数器将输入的数据直接缓存到对应的位次。 辅助模块:由于串并行数据输入输出的特性,输入的时钟周期与输出时钟周期是不同的。 8分频模块(开始 //计数器 reg [3:0] cnt; always @(posedge clk or negedge rst_n) begin if (! <= ~clk_div8_r; end end assign clk_div8 = clk_div8_r; //计数器8分频模块(结束 //移位寄存器模块(开始 //输入先寄存一拍 8分频模块(开始 //计数器 reg [3:0] cnt; always @(posedge clk or negedge rst_n) begin if (! clk_div8 & clk_div8_r;//8分频信号上升沿检测——逻辑运算输出 //计数器8分频模块(结束 //移位寄存器模块(开始 //输入先寄存一拍 reg [WIDTH - 1 : 0

    19.5K20编辑于 2023-05-25
  • 来自专栏数字IC经典电路设计

    七种常见计数器总结(格雷码计数器、环形计数器、约翰逊计数器、FLSR、简易时分秒数字秒表等|verilog代码|Testbench|仿真结果)

    快速导航链接如下: 个人主页链接 1.数字分频器设计 2.序列检测器设计 3.序列发生器设计 4.序列模三检测器设计 5.奇偶校验器设计 6.自然二进制数与格雷码转换 7.线性反馈移位寄存器LFSR 8 计数器 --- 此处更详细可以参考线性反馈移位寄存器LFSR(斐波那契LFSR(多到一型)和伽罗瓦LFSR(一到多型)|verilog代码|Testbench|仿真结果)。 --- 5.1 斐波那契LFSR 5.1.1 斐波那契LFSR 斐波那契LFSR为多到一型LFSR,即多个触发器的输出经过异或逻辑来驱动一个触发器的输入。 5.2.1 伽罗瓦LFSR 伽罗瓦LFSR为一到多型LFSR,即一个触发器的输出经过异或逻辑来驱动多个触发器的输入。 移位寄存器类计数器:包括环形计数器、扭环形计数器(又称约翰逊计数器)、LFSR计数器,三种都可归结于由寄存器与一个反馈回路组成,只不过对于环形计数器,没有反馈回路;对于扭环形计数器,反馈回路只是将最低位取反

    8.3K80编辑于 2023-05-30
  • 来自专栏FPGA探索者

    扭环形计数器、环形计数器、m 序列线性反馈移位寄存器、ZC 序列

    移位寄存器由 8 级触发器组成,用它构成的扭环形计数器具有______种有效状态;用它构成的环形计数器具有______种有效状态,构成线性反馈移位寄存器具有______种有效状态。 A. 16,8,511 B. 4, 8,15 C. 16,8,255 D. 8,16,127 答案:C 解析: (1)扭环形计数器,每次状态变化时仅有一个触发器发生翻转,译码不存在竞争冒险,在n(n≥ 3)位计数器中,使用2n个状态,有2^n-2n个状态未使用; (2)环形计数器,正常工作时所有触发器中只有一个是1(或0)状态,计n个数需要n个触发器,状态利用率低; (3)n个寄存器的线性反馈移位寄存器 LFSR可以产生的最长的随机序列是2^n−1长度(即m序列)。 LFSR常被用来生成m序列,也可产生和校验 CRC。 CRC 的可以参考:FPGA手撕代码——CRC校验码的多种Verilog实现方式 移位计数器 ? ? ? ? ? ? ? 通信相关扩展 ?

    2.2K30发布于 2021-05-26
  • 来自专栏数字积木

    HDLBits:在线学习 Verilog (二十二 · Problem 105 - 109)

    Problem 105 12-hour clock 牛刀小试 用计数器设计一个带am/pm的12小时时钟。该计数器通过一个CLK进行计时,用ena使能信号来驱动时钟的递增。 hh、mm和ss由两个BCD计数器构成hours(01~12), minutes(00~59) , second(00~59)。 Galois LFSR是一个特殊的移位寄存器。其中带有"tap"位的位置与输出位XOR产生下一个值没有"tap"位标志的正常移位。如果"tap"位置经过仔细选择后,LFSR将设置为最大长度。 再重复之前LFSR的最大长度为2^n-1 下图所示LFSR为在位置5和位置3包含"tap"位的5-bit最大长度LFSR。开始为位置1,输入为0。 ? 设计如上图所示LFSR,复位信号使LFSR复位为1. module top_module( input clk, input reset, // Active-high synchronous

    96410发布于 2021-04-15
  • 来自专栏全栈程序员必看

    BIST

    PRPG生成的伪随机码有线性反馈移位寄存器(LFSR)、细胞自动机(cellular automaton,CA)、二进制计数器、改进计数器、ROM与LFSR组合电路等等。。。 实际电路中通常采用LFSR产生穷举测试序列和伪随机测试序列,穷举测试序列的故障覆盖率可达100%,但因其测试量较大,只应用在输入端较少的电路中。 MISR实际上是一个增强的LFSR,从电路中取输出值,产生一个压缩的输出向量称为特征。 控制器包括两个计数器:向量计数器和移位计数器,向量计数器用来计算应用的测试向量,移位计数器用来计算需要填充扫描链的周期数,通常等于电路中最长的扫描链长度。

    1.5K20编辑于 2022-11-01
  • 来自专栏FPGA探索者

    FPGA手撕代码——CRC校验码的多种Verilog实现方式

    思路:写一个计数器,当需要输出 CRC 时,串行计数输出,实现并串转换。 ,lfsr_c; assign crc_out = lfsr_q; always @(*) begin lfsr_c[0] = lfsr_q[7] ^ data_in[0]; lfsr_c[1] = lfsr_q[0] ^ lfsr_q[7]^ data_in[0]; lfsr_c[2] = lfsr_q[1] ^ lfsr_q[7]^ data_in[0]; lfsr_c[3] = lfsr_q[2]; lfsr_c[4] = lfsr_q[3]; lfsr_c[5] = lfsr_q[4]; lfsr_c[6] = lfsr_q[5 ) begin lfsr_q <= {8{1'b1}}; end else begin lfsr_q <= crc_en ?

    17.4K66发布于 2021-03-15
  • 来自专栏用户4866861的专栏

    选择通用计数器应该注意这8

    市场上常见的通用计数器五花八门,会让部分使用人员不知道如何选择通用计数器,今天给大家分享下选择通用计数器的心得,免得在选择通用计数器上误入雷区。 SYN5636型高精度通用计数器.png 4、是否有外参考设计 有些通用计数器厂家是没有设计外参考输入功能的,这个功能对于需要更高精度的测试是非常必要的,通用计数器可以借助外参考源的高准确度大幅度提高测量精度 SYN5636型高精度通用计数器 5、通用计数器测量功能越多越好 通用计数器尽量选择多种功能,尽量包括时间间隔测量功能、累加计数功能、相位测量功能、瞬时日差测量功能、功率测量功能、测量功能、阿仑方差统计 6、内部晶振校准功能 晶振都有老化率,随着使用时间的延长精度都会降低,一定要选择可以外部调节内部晶振功能的通用计数器,通用计数器具有输出内部晶振10MHz接口,并且留有外部校准接口。 8、测量范围 市场上同行的通用计数器的测量范围都是很窄的,建议选择测量范围宽的,比如SYN5636型高精度通用计数器,它的范围在:100μHz~24GHz。

    76130发布于 2021-07-12
  • 来自专栏用户7494468的专栏

    Verilog设计实例(1)线性反馈移位寄存器(LFSR

    {data_lfsr_r[3]^data_lfsr_r[12]^data_lfsr_r[14]^data_lfsr_r[15]}, data_lfsr_r 使用LFSR可以使许多应用受益,包括: 计数器(Counters) 测试码型发生器(Test Pattern Generators) 数据加扰(Data Scrambling) 密码学(Cryptography end 8: begin r_XNOR = r_LFSR[8] ^~ r_LFSR[6] ^~ r_LFSR[5] ^~ r_LFSR[4]; end [9]; end 12: begin r_XNOR = r_LFSR[12] ^~ r_LFSR[6] ^~ r_LFSR[4] ^~ r_LFSR[ 1]; end 13: begin r_XNOR = r_LFSR[13] ^~ r_LFSR[4] ^~ r_LFSR[3] ^~ r_LFSR[1

    2.6K20发布于 2020-06-29
  • 来自专栏FPGA技术江湖

    FPGA产生基于LFSR的伪随机数

    上一篇《基于FPGA 的CRC校验码生成器》文中,提到了“要实现这一过程,仍然需要LFSR电路,在这补一篇《FPGA产生基于LFSR的伪随机数》,欢迎大家交流学习。话不多说,上货。 2、由LFSR引出的产生方法 产生伪随机数的方法最常见的是利用一种线性反馈移位寄存器(LFSR),它是由n个D触发器和若干个异或门组成的,如下图: ? 下面以n=3,g0=1,g1=1,g2=0,g3=1为例,说明LFSR的特性,具有该参数的LFSR结构如下图: ? 3)D触发器的个数越多,产生的状态就越多,也就越“随机”; 3、verilog实现 基于以上原理,下面用verilog产生一个n=8,反馈系数为g0g1g2g3g4g5g6g7g8=101110001 的伪随机数发生器,它共有2^8=255个状态,该LFSR的结构如下: ?

    1.1K20发布于 2020-12-29
  • 来自专栏用户7494468的专栏

    FPGA设计心得(6)Aurora IP核例子简析与仿真(framing版)

    LFSR用于生成伪随机数据,并且LFSR的低位连接到REM总线。 首先,读了这段描述,一般肯定不知道具体干啥的,但是大概知道是生成一系列数据,并发送出去,而且用的是framing数据格式。 {data_lfsr_r[3]^data_lfsr_r[12]^data_lfsr_r[14]^data_lfsr_r[15]}, data_lfsr_r ,使用计数器确定要发送的一帧数据的大小; 同理,bytes_sent_r 使用第二个计数器来确定已经发送了多少个帧字节; 最难理解的属于ifg了? 这两个计数器有什么关系呢? idle_r) bytes_sent_r <= `DLY bytes_sent_r + 1; frame计数器呢?

    2.4K30发布于 2020-06-29
  • 来自专栏FPGA技术江湖

    FPGA设计中,产生LFSR伪随机数

    今天给大侠带来在FPGA设计中,产生LFSR伪随机数,话不多说,上货。 二、由LFSR引出的产生方法 产生伪随机数的方法最常见的是利用一种线性反馈移位寄存器(LFSR),它是由n个D触发器和若干个异或门组成的,如下图: ? 下面以n=3,g0=1,g1=1,g2=0,g3=1为例,说明LFSR的特性,具有该参数的LFSR结构如下图: ? 三、verilog实现 基于以上原理,下面用verilog产生一个n=8,反馈系数为g0g1g2g3g4g5g6g7g8=101110001的伪随机数发生器,它共有2^8=255个状态,该LFSR的结构如下

    1.8K10发布于 2020-12-30
  • 来自专栏用户6291251的专栏

    基于yolov8,制作停车位计数器(附源码)

    今天小F就给大家介绍三个使用YOLOv8制作的计数器,非常实用。 使用到Python版本以及相关Python库。 接下来就来看一下客流计数器的检测代码吧! / 02 / 鸡蛋计数器 使用OpenCV和YOLOv8检测鸡蛋个数。 能够高效、准确、安全可靠的完成鸡蛋个数的统计工作。 基于yolov8-seg实例分割的实时检测。 具体代码如下。 / 03 / 停车位计数器 使用OpenCV和YOLOv8检测停车场剩余车位。 提醒车主停车场各个区域的剩余车位信息。 使停车场车位管理更加规范有序,提高车位使用率。 (frame, [np.array(area8, np.int32)], True, (0, 255, 0), 2) cv2.putText(frame, str('8'), (527,

    88010编辑于 2023-12-30
  • 来自专栏用户4866861的专栏

    单光子计数器,时间相关光子计数器,单光子光电计数器

    SYN5648型时间相关单光子计数器(TCSPC)产品概述SYN5648型时间相关单光子计数器(TCSPC)是由西安同步电子科技有限公司精心设计、自行研发生产的一款专用的高精密时间间隔计数测量仪器。 本产品支持2/4/8/12/16/32/64通道,在同一个参考时钟下对64个输入信号进行并行的时间间隔测量,每个通道都可实现64ps的时间分辨率和20Mcps的饱和计数率。 技术指标输入信号被测信号路数2/4/8/12/16/32/64电平LVTTL物理接口SMA计数时间分辨率≤80ps单路饱和探测计数率≥20MHz时间抖动≤100ps输出信号恒温晶振路数1路频率10MHz

    2K20编辑于 2023-04-07
  • 来自专栏OpenFPGA

    FPGA 的布局规划艺术

    [8] ^ data_in[11] ^ data_in[12] ^ data_in[15]; lfsr_c[5] = lfsr_q[16] ^ lfsr_q[17] ^ lfsr_q[19] ^ [8] ^ data_in[11] ^ data_in[14]; lfsr_c[7] = lfsr_q[16] ^ lfsr_q[18] ^ lfsr_q[19] ^ lfsr_q[21] ^ ^ data_in[7] ^ data_in[8] ^ data_in[10] ^ data_in[15]; lfsr_c[8] = lfsr_q[16] ^ lfsr_q[17] ^ lfsr_q [8] ^ data_in[12] ^ data_in[13]; lfsr_c[17] = lfsr_q[1] ^ lfsr_q[17] ^ lfsr_q[21] ^ lfsr_q[22] ^ ] ^ data_in[8] ^ data_in[12]; lfsr_c[29] = lfsr_q[13] ^ lfsr_q[19] ^ lfsr_q[22] ^ lfsr_q[23] ^ lfsr_q

    93920发布于 2021-09-07
  • 来自专栏OpenFPGA

    Verilog数字系统基础设计-扰码与解扰

    以每个时钟周期到达8位并行数据为例,LFSR伪随机序列产生器需要在每个时钟周期内产生8位随机数,同时扰码器在每个时钟周期内产生8位扰码后的随机数据。 我们可以假定有一个8倍于当前并行数据工作时钟的虚拟时钟,在8个虚拟时钟周期之后,LFSR伪随机序列产生器可以产生8位数据(注意,LFSR伪随机序列产生器的输出与当前输入数据是无关的,与寄存器的当前状态有关 ),这8位数据与输入的8位原始数据进行异或,就可以得到并行扰码的最终结果。 Since there are 8 bits of data coming input, the LFSR flops value moves 8 times (as there is an imaginary 4] = lfsr[8] ^ lfsr[9] ^ lfsr[12]; assign lfsr_int[51 = lfsr[8] ^ lfsr[9] ^ lfer[10] ^ lfsr[13];

    2.8K20发布于 2021-09-07
  • 来自专栏OpenFPGA

    HDLBits: 在线学习 SystemVerilog(十七)-Problem 106-114(移位寄存器)

    实现可以查看下面专栏: https://www.zhihu.com/column/c_1131528588117385216 缩略词索引: SV:SystemVerilog 从今天开始新的一章-时序电路,包括触发器、计数器 2'b01:左移 8 位。 2'b10:右移一位。 2'b11:右移 8 位。 q:移位器的内容。 图片来自HDLBits 构建这个 LFSR。复位将 LFSR 重置为 1 。 Problem 111-Lfsr32 题目说明 参考109题中的 5bit LFSR,实现一个 32bit LFSR, 抽头点为32,22,2,1。 首先通过 8 个触发器实现一个 8bit 深的移位寄存器。8个寄存器的输出依次为 Q[0]...Q[7]。移位寄存器的输入为 S,输入首先会填充到 MSB(最高位),Q[0]。

    1.2K20编辑于 2023-02-14
  • 来自专栏DDD

    计数器算法

    《微服务-熔断机制》中提到了计数器,这篇详细学习一下计数器算法 之前的有次面试,碰到了计数器的的题目 Q:线上服务,设计一个拦截器,一个IP如果短时间内请求次数过多,就屏蔽 A:使用map,key为ip 计数器计数器法是限流算法里最简单也是最容易实现的一种算法。比如我们规定,对于A接口来说,我们1分钟的访问次数不能超过100个。 我再来回顾一下刚才的计数器算法,我们可以发现,计数器算法其实就是滑动窗口算法。只是它没有对时间窗口做进一步地划分,所以只有1格。 等待时间:0.199845 6 handle request 1528693922449 等待时间:0.199757 7 handle request 1528693922649 等待时间:0.19981 8 总结 计数器 VS 滑动窗口 计数器算法是最简单的算法,可以看成是滑动窗口的低精度实现。滑动窗口由于需要存储多份的计数器(每一个格子存一份),所以滑动窗口在实现上需要更多的存储空间。

    2K31发布于 2021-03-23
  • 来自专栏全栈程序员必看

    【Verilog】移位寄存器总结:移位寄存器、算数移位寄存器、线性反馈移位寄存器(LFSR)

    q <= data; end else if (ena) begin case(amount) 2'b00:q <= q<<1; //左移一位 2'b01:q <= q<<8; 1'b1,q[63:1]}; end end 2'b11:begin //右移八位 if(q[63] == 0)begin q <= q >> 8; end else begin q <= { 8'b1111_1111,q[63:8]}; end end endcase end end endmodule 1、伽罗瓦LFSR(Galois LFSR) 伽罗瓦LFSR是一到多型的LFSR,即最后一个触发器的输出 与抽头序列对应位置触发器前一级触发器的输出 相异或逻辑来驱动多个抽头序列对应位置触发器的输入,如下图所示 Galois LFSR:其中抽头的位置与输出位异或,以产生其下一个值。如果仔细选择抽头位置,则LFSR可以设置为“最大长度”。n位的最大长度LFSR有2n-1个状态(永远不会达到全零状态)。

    4.3K30编辑于 2022-09-13
领券