首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏数字IC经典电路设计

    数字分频器设计(偶数分频奇数分频、小数分频、半整数分频、状态机分频|verilog代码|Testbench|仿真结果)

    二、偶数分频 2.1 触发器级联法 采用触发器反向输出端连接到输入端的方式,寄存器级联法能实现2^N的偶数分频,具体是采用寄存器结构的电路,每当时钟上升沿到来的时候输出结果进行翻转,以此来实现偶数分频。 2.2 计数器法 如果偶数分频系数过大或者寄存器级联法无法实现对应的分频,可以采用计数器法进行分频,计数器法可以实现任意偶数分频。 2.3 verilog代码 //偶数分频电路设计(2分频、4分频、8分频、6分频) //触发器法实现2分频、4分频、8分频 //计数器法实现6分频 module clk_div_even( input 对于计数器实现偶数分频,占空比和分频数都可以得到极大的控制,是实现偶数分频最灵活的一种方式。 首先做出两个上升沿和下降沿二分频信号,通过在半整数两边寻找相邻的的奇数偶数(决定信号电平周期数),然后做逻辑运算即可以得到占空比50%的半整数分频

    11.5K40编辑于 2023-05-18
  • 来自专栏瓜大三哥

    奇数分频

    奇数分频有多种实现方法,下面介绍常用的错位“异或”法的原理。如进行三分频,通过待分频时钟上升沿触发计数器进行模三计数,当计数器计数到邻近值进行两次翻转。 这种错位“异或”法可以推广实现任意的奇数分频:对于实现占空比为50%的N倍奇数分频,首先进行上升沿触发的模N计数,计数到某一选定值时进行输出时钟翻转,然后经过(N-1)/2再次进行翻转得到一个占空比非50% 奇数N分频时钟。 再者同时进行下降沿触发的模N计数,到和上升沿触发输出时钟翻转选定值相同值时,进行输出时钟时钟翻转,同样经过(N-1)/2时,输出时钟再次翻转生成占空比非50%的奇数N分频时钟。 两个占空比非50%的N分频时钟相或运算,得到占空比为50%的奇数N分频时钟。

    1.4K100发布于 2018-02-24
  • 来自专栏FPGA探索者

    Verilog笔记——奇数分频和小数分频

    偶数分频 简单,只是注意时钟翻转的条件是(N/2)还是(N/2)-1,非阻塞赋值在下一个时钟才会更新值。 2. 奇数分频 奇数分频偶数分频复杂一些,当不要求分频的占空比时,对输入时钟clk上升沿计数,可以设置两个计数的翻转点,一个是(N-1)/2,一个是(N-1),计数到(N-1)时输出时钟翻转且将计数器清零 ,假设计数器计数0~(N-1)/2区间输出低电平,则输出时钟的低电平有(N-1)/2 + 1个clk周期,高电平的计数是(N-1)/2+1 ~ (N-1),共(N-1)/2个clk周期,可见不是50%占空比 0] count_p; //上升沿计数 reg [2:0] count_n; //下降沿计数 reg clk_p; //上升沿分频 reg clk_n; 对2*(N+0.5) = 2N+1,这个数一定是奇数,按照奇数分频的思路做,也取clk_p和clk_n,但是计数值不一样,一个计数N个clk时钟周期(2N个clk_half周期),一个计数2N+2个clk_half

    1.1K30发布于 2021-03-15
  • 来自专栏数字芯片

    FPGA奇数分频

    设计中尽量还是要避免使用自己计数分频得到的时钟,去使用厂家自带的分频IP(如Vivado中的clock wizard)。 偶数分频比较简单,这里略过。 对于不要求占空比为50%的奇数分频,也比较简单,直接模N计数,期间进行两次翻转就可以了。 这里重点介绍要求占空比为50%的奇数分频。 步骤:   1. 在时钟上升沿,进行模N计数,选定到某个值(比如选择1)时翻转,经过(N-1)/2 个时钟再进行翻转,产生一个临时时钟clk_p;   2. 输出时钟clk_o = clk_p | clk_n; 图解:(假如需要5分频) ? cnt2 <= cnt2 + 1'b1; if(cnt2 == 3'b1 || cnt2 == 3'b11) clk_n <= ~clk_n;

    1.4K11发布于 2020-07-20
  • 来自专栏FPGA开源工作室

    Verilog实现偶数奇数、半整数、分数(小数)分频,画电路图用D触发器实现分频

    通常我们说对原时钟进行N分频,即分频后的时钟的一个周期是原时钟周期的N倍。N可以为偶数奇数、半整数、分数(小数)。 1.偶数分频 Verilog:N为偶数,使用一个计数器循环0-(N-1)进行计数,在N/2-1与N-1分别将输出取反,即完成了N分频。 若果采用D触发器画出分频器,单个D触发器的反向输出到输入就构成了一个简单的2分频器,以此为基础,其分频输出作为下一级D触发器的时钟,如此串联起来,x个串联就是2^x分频,属于偶数分频,如图1[1]. ? 图1 用D触发器分频 2.奇数分频 Verilog:N为奇数,使用一个计数器循环0-(N-1)进行计数,控制(N-1)/2个高电平,(N+1)/2个低电平,称为A;然后将此A电平信号延迟半个时钟周期称为 图3奇数分频 下面给出N为正整数的分频器设计,主要原理是N[0]=1为奇数分频,0为偶数分频

    4.3K10发布于 2020-03-06
  • 来自专栏FPGA探索者

    笔试 | Verilog分频器代码——50%占空比奇数分频、0.5型小数分频

    偶数分频 简单,只是注意时钟翻转的条件是(N/2)还是(N/2)-1,非阻塞赋值在下一个时钟才会更新值。 2. 奇数分频 奇数分频偶数分频复杂一些,当不要求分频的占空比时,对输入时钟clk上升沿计数,可以设置两个计数的翻转点,一个是(N-1)/2,一个是(N-1),计数到(N-1)时输出时钟翻转且将计数器清零 ,假设计数器计数0~(N-1)/2区间输出低电平,则输出时钟的低电平有(N-1)/2 + 1个clk周期,高电平的计数是(N-1)/2+1 ~ (N-1),共(N-1)/2个clk周期,可见不是50%占空比 0] count_p; //上升沿计数 reg [2:0] count_n; //下降沿计数 reg clk_p; //上升沿分频 reg clk_n; 对2*(N+0.5) = 2N+1,这个数一定是奇数,按照奇数分频的思路做,也取clk_p和clk_n,但是计数值不一样,一个计数N个clk时钟周期(2N个clk_half周期),一个计数2N+2个clk_half

    3.2K30编辑于 2022-05-26
  • 来自专栏根究FPGA

    分频与偶分频

    一、偶分频 分频在FPGA通过计数器实现,偶分频计数只需计数到N/2-1,然后进行时钟翻转,同时将计数器清零,即可得到(偶数)N分频,很简单就不赘述了。 实现奇分频的方法有很多种,很常用的方法为相位异或法,该方法的总结:对于实现50%奇数N分频电路,首先进行进行上升沿进行模长N计数,计数选定到某一个值进行输出时钟翻转,然后再经过(N-1)/2(重点! 一定是(N-1)/2)再次进行翻转得到一个占空比非50%奇数N分频时钟;同时进行下降沿触发的模N计数,到和上升沿触发输出时钟翻转选定值相同,进行输出时钟翻转,同样经过(N-1)/2时,输出时钟再次翻转会生成占空比非 50%的奇数N分频时钟,两个占空比非50%的奇数N分频时钟相或运算,得到占空比50%的N分频时钟。 升级:设计一个5分频,占空比0.5 代码: /* 5分频 */ module fivefp( input clk, input rst_n, output clko ); reg [2:0]cnt0

    1.6K20发布于 2020-06-29
  • 来自专栏个人测试

    FPGA学习-7偶分频——六分频

    分频器分为偶数分频器和奇数分频器,和计数器非常类似,有时候甚至可以说就是一个东西。 2.实现分频 想得到比固定时钟频率更慢的时钟,可以将固定时钟进行分频 想得到比固定时钟频率更快的时钟,可以将固定时钟进行倍频 又两种方式实现分频与倍频 ①锁相环pll ②自己编写verilog语言来实现 3.奇偶分频分频:成倍数低于输入频率的输出信号有2、4、6、8分频分频:成倍数低于输入频率的输出信号有3、5、7、9分频 分频就是输出信号的一个周期对应clk的6个周期 凡是时钟信号都要连接到全局时钟网络 二、实现 1.方式一波形图 图片 图片 2.方式一程序(分频法) module divider_six ( input wire sys_clk, input wire sys_rst_n, == 1’b0) cnt <= 2’b0; else if(cnt == 2’d2) cnt <= 2’b0; else cnt <= cnt + 1’b1; endmodule 仿真程序 `timescale

    1.5K80编辑于 2022-08-16
  • 来自专栏程序员

    VHDL实现分频

    版权声明:本文为博主原创文章,转载请注明博客地址: https://blog.csdn.net/zy010101/article/details/89353149 10分频电路 分频器) LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL 分频电路(2,4,8分频电路) LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL =NOT counter(0); clk_div_4<=NOT counter(1); clk_div_8<=NOT counter(2); END clk_div_behavior; 占空比为2: AND clk='1')THEN IF(temp=counter)THEN --控制分频 temp<="000"; ELSE temp<=temp+1; END IF

    1.3K30发布于 2019-05-25
  • 来自专栏瓜大三哥

    非整数分频模块

    非整数分频模块有两种实现方法,分别为分频比交错法和累加器分频法。下面分别进行介绍。 1.分频比交错法 分频比交错法,顾名思义就是在一定时间间隔T内,由不同的分频比电路交叉着对输入信号进行分频,从而在T时间内达到小数分频的目的。 假设要实现8.666666分频,则可以以6次分频为一个周期,每个周期内进行2次9分频和4次8分频,这样,输出F_OUT均为F_IN的8.666666分频,该类分频器的程序结构如图所示。 =3'b101) cnt2<=3'b000; else cnt2<=cnt2+3'b001; end elseif(cnt1<4'b0100) begin cnt1<=cnt1+4'b0001; clk_out_t 2.累加器分频法 累加器分频法的结构如图所示,通过调整步长STEP 的值来实现不同的分频比。假设累加器位数为8,则累加器的模值N为28=256。若STEP=27,则分频比K为: ?

    1.1K81发布于 2018-02-24
  • 来自专栏FPGA技术江湖

    FPGA系统性学习笔记连载_Day11【奇分频、偶分频

    意思是分频系数是奇数还是偶数。 三、奇分频分频:意思对一个时钟进行奇数分频 假如:我们有一个50MHz的基准信号,我们要得到10MHz信号,该怎么做? 3、50Mhz分频为10Mhz 1)、首先我们要进行5分频 5分频分频后的周期为之前的5个周期电平。 2)、如果周期电平确定为5个,那么我们就需要2.5个周期就改变一次电平状态,才能满足5分频。 、下降沿计数:计数周期为5,当计数为2时,翻转电平,当计数为5时,翻转电平 3)、将2次得出的电平结果,相或就得出了想要的5分频时钟(10MHz),如下图。 ,得到一个无法除尽的频率16.666....如图 三、偶分频分频:比较简单,只需要N/2作电平翻转即可 四、下板验证(intel Cycle IV) 我们需要一个系统时钟clk、2个GPIO输出clk

    1.3K00发布于 2021-04-06
  • 来自专栏AIoT技术交流、分享

    STM32如何计算RTC时钟异步预分频和同步预分频

    在配置RTC时钟时预分频器是关键指标,通过配置预分频器可以自定义计数周期。 以STM32L0系列MCU为例,介绍RTC时钟的异步预分频和同步预分频配置方法。 预分频器分为 2 个可编程的预分频器:通过 RTC_PRER 寄存器的 PREDIV_A 位配置的 7 位异步预分频器(范围0~2^7),通过 RTC_PRER 寄存器的 PREDIV_S 位配置的 15 位同步预分频器(范围0~2^15)。 在参考文档中给出了(f ck_apre)异步预分频和(f ck_spre)同步预分频的计算公式,(f ck_apre)异步预分频主要是亚秒级计数,(f ck_spre)同步预分频是普通得日历计数(秒级别 ),在计算两个预分频器时,推荐将异步预分频器(PREDIV_A)配置为较高的值,以最大程度降低功耗。

    1.9K20发布于 2021-01-20
  • 来自专栏python全栈教程专栏

    判断奇数偶数

    判断奇数偶数 //判断奇数偶数 #include int main() { int number; printf("请输入一个整数: "); scanf("%d", &number); // 判断这个数除以 2 的余数 if(number % 2 == 0) printf("%d 是偶数。" , number); else printf("%d 是奇数。", number); return 0; }

    1.9K30发布于 2021-10-18
  • 来自专栏可涵的从小白到大牛的征程

    调整奇数偶数顺序

    题目: 输入一个整数数组,实现一个函数, 来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分, 所有偶数位于数组的后半部分。 思路一: 可以重新开辟一个数组,然后将原有的数组遍历,先把奇数拷贝到新的数组,然后再把偶数拷贝。 源码: int main() { int arr1[10] = { 1,2,3,4,5,6,7,8,9,10 }; int cnt = 0; int arr2[10] = { 0 }; for if (arr1[i] % 2 ! 如果left和right表示的区间[left, right]有效,进行b,否则结束循环  b. left从前往后找,找到一个偶数后停止  c. right从后往前找,找到一个奇数后停止  d.

    62310编辑于 2024-10-16
  • 来自专栏数字IC小站

    【005】数字IC笔面试常见题

    代码核心如下: 偶数分频 偶数分频器的实现简单,用计数器在上升沿或者下降沿计数,当计数器的值等于分频系数的一半或等于分频系数时,信号翻转。 偶数分频分频原理如下图所示: 上图的的分频系数是4,就是4分频。 电路原理是用一个上升沿计数的计数器,每次计数到2时输出信号clkout翻转一次,每次计数到4时clkout再翻转一次,一直周期重复下去。其他的偶数分频器原理也是一样。 如果偶数分频系数是2的幂,就可以用2分频器级联得到;例如4分频就是两个2分频级联,下图就是用两个2分频器级联得到4分频器。 奇数分频 奇数分频器跟偶数分频器一样,当计数器的值等于分频系数(加1或者减1)的一半或等于分频系数时,时钟信号翻转。

    61910编辑于 2022-08-26
  • 来自专栏阿飞的学习记录

    位运算判断奇数偶数

    例: 1111 0011 运算 1111 0011 结果 0011 一个数的二进制形式 末尾是1一定是奇数 比如我们的5: 二进制形式 0101 = 1x2^0 +1x2^2 = 5 1x2^2 一定是偶数 因为都是2的倍数 当我们1x2^1 2的0次方是 是1 是 奇数 偶数加上奇数一定是奇数 末尾是0 一定是偶数 奇偶判断的方法 让这个数和1相与 结果是0就是偶数 结果为1 就是奇数 例如: 4&1=0 4的二进制:100 1的二进制:001 结果 000 /** * 奇数偶数判断 * 把这个数和 1 相 & 结果为 1 是奇数 结果为0 是偶数 * @create: 2021/8/5 * @author: Tony Stark */ public class Demo { public static void main(String[] args) { int x1=1; int x2=2; int

    1.6K40编辑于 2022-03-24
  • 来自专栏Java架构师必看

    cdn加速的原理_一文读懂分频

    今天说一说cdn加速的原理_一文读懂分频器,希望能够帮助大家进步!!! 例子1:源站是域名源站为 www.a.com ,回源host为 www.b.com ,那么实际回源是请求到 www.a.com 解析到的IP,对应的主机上的站点 www.b.com 例子2:源站是IP源站为

    1.6K30编辑于 2022-08-14
  • 来自专栏小屁折腾日记

    奇数偶数和-while()结构

    abs int main() { int i = 1, sum_odd = 0, sum_even = 0; while (i <= 20) { if (i % 2

    53310编辑于 2024-02-02
  • 来自专栏python全栈教程专栏

    所有偶数放所有奇数

    void move(Sqlist &sq) { ElemType t; int i = 0, j = sq.len - 1; while (i<j) { while (sq.data[i] % 2 == 1) i++;//奇数 向后 while (sq.data[j] % 2 == 0) j--;//偶数 向前 if(i<j) //只要两个还没相遇 { t = sq.data[i ];//得到的奇数 sq.data[i] = sq.data[j];//偶数放到奇数位置 sq.data[j] = t;//奇数放到偶数位置 i++;//同步移动到下一个 j--

    1.2K10发布于 2021-10-18
  • 来自专栏FPGA技术江湖

    源码系列:基于FPGA的任意分频器设计(附源工程)

    今天给大侠带来基于FPGA的任意分频器设计,话不多说,上货。 设计概述 在FPGA设计中,分频器一直都担任着很重要的角色,我相信很多人都已经想到了利用计算器来计算想要使用的时钟频率,但问题是仅仅利用计数器来分频,只可以实现偶数分频,而如果我需要三分频,五分频,七分频等等奇数分频 在这里,让我介绍一个可以实现任意整数分频的方法,这个办法也是同样利用了计数器来计算,跟偶数分频不一样的地方是任意整数分频利用了两个计数器来实现。 设计原理 本次设计主要是设计一个可调的分频器,设置其参数,可以调节其输出的占空比,占空比的意思就是高电平所占周期的多少。 7 ; parameter LW = 3 ; localparam s0 = 1'b0; localparam s1 = 1'b1; reg state; reg [2:

    49910编辑于 2025-01-13
领券