FPGA学习心得——分频器
2012-07-30 17:08
274 查看
分频器是FPGA设计过程中使用频率非常高的基本单元之一。其基于FPGA的实现主要包括:1、通过FPGA芯片内部集成锁相环(如altera的PLL,Xilinx的DLL)来进行时钟的分频、倍频以及相移设计;2、对于时钟要求不太严格的设计,可以通过硬件描述语言进行时钟分频。通过后者进行分频器设计可以实现节省锁相环资源,达到对时钟操作的目的。
百度文库中可以搜到这样一片文章——《使用VHDL进行分频器设计》,文章中介绍了几乎所有可能用到的分频器(整数分频器、半整数分频器、小数分频器以及积分分频器)的设计,很好很强大。
作为刚开始学FPGA的新手,把自己在学习过程中的一点心得记录下来,一则为了鼓励自己继续努力,认真钻研;二则也算是一种记录生活的方式吧。
1、假设系统时钟为50MHz,现在要分频出250KHz(即5ms)的偶数分频器,基于硬件描述语言的分频器设计程序一般有如下两种:
(1)
(2)
第一种方式是通过计数后反向来实现分频时钟的高低电平跳变,第二种方式则直接对分频时钟赋值处理。
在计数的过程中,需要注意的是:计数变量cnt_clk的范围,如果cnt_clk从0开始计算,则应该注意cnt_clk的最大取值!
2、在使用分频时钟的时候,不能直接将分频得到的CLK_CLOCK定义为Port的in端口,否则会出错(the signal CLK_BUFGP has no load)。这时可以将CLK_CLOCK设置成Signal,然后外接一个按键作为Reset触发信号,也可以不用外接按键,直接采用延时的方式来作为CLK_CLOCK的Reset触发。在书上有看到CLK_CLOCK在Port中定义为buffer的端口,这种方式是可以的,不过也得使用Reset触发信号。
更正下:今天看到有把CLK_CLOCK设置成Port的in端口的,文中使用原理图搭建框架,然后再编写相应子模块的程序。
百度文库中可以搜到这样一片文章——《使用VHDL进行分频器设计》,文章中介绍了几乎所有可能用到的分频器(整数分频器、半整数分频器、小数分频器以及积分分频器)的设计,很好很强大。
作为刚开始学FPGA的新手,把自己在学习过程中的一点心得记录下来,一则为了鼓励自己继续努力,认真钻研;二则也算是一种记录生活的方式吧。
1、假设系统时钟为50MHz,现在要分频出250KHz(即5ms)的偶数分频器,基于硬件描述语言的分频器设计程序一般有如下两种:
(1)
Proc_Clk_5ms : process(Clk) variable cnt_clk : integer range 0 to 125000 := 0; begin if(rising_edge(Clk)) then if(cnt_clk < 125000) then cnt_clk := cnt_clk + 1; else cnt_clk := 0; Clk_scan <= not Clk_scan; end if; Clk_5ms <= Clk_scan; end if; end process Proc_Clk_5ms;
(2)
Proc_Clk_5ms : process(Clk) variable cnt_clk : integer range 0 to 125000 := 0; begin if(rising_edge(Clk)) then if(cnt_clk < 125000) then cnt_clk := cnt_clk + 1; Clk_scan <= '0'; elsif(cnt_clk < 249999) then cnt_clk := cnt_clk + 1; Clk_scan <= '1'; else cnt_clk := 0; end if; Clk_5ms <= Clk_scan; end if; end process Proc_Clk_5ms;
第一种方式是通过计数后反向来实现分频时钟的高低电平跳变,第二种方式则直接对分频时钟赋值处理。
在计数的过程中,需要注意的是:计数变量cnt_clk的范围,如果cnt_clk从0开始计算,则应该注意cnt_clk的最大取值!
2、在使用分频时钟的时候,不能直接将分频得到的CLK_CLOCK定义为Port的in端口,否则会出错(the signal CLK_BUFGP has no load)。这时可以将CLK_CLOCK设置成Signal,然后外接一个按键作为Reset触发信号,也可以不用外接按键,直接采用延时的方式来作为CLK_CLOCK的Reset触发。在书上有看到CLK_CLOCK在Port中定义为buffer的端口,这种方式是可以的,不过也得使用Reset触发信号。
更正下:今天看到有把CLK_CLOCK设置成Port的in端口的,文中使用原理图搭建框架,然后再编写相应子模块的程序。
相关文章推荐
- FPGA学习心得——矩阵键盘
- FPGA入门学习第一课:二分频器
- 个人FPGA学习心得
- FPGA学习心得
- 学习FPGA verilog的心得--编程技巧--如何写代码减少逻辑单元的使用数量
- FPGA学习心得及(flash读写,+lwip+数据发送等问题)
- FPGA学习心得——LCD1602文字滚动显示(4位传输模式、ST7066U控制芯片)
- FPGA之FIFO学习心得
- FPGA&CPLD学习心得
- FPGA学习心得汇总(手中写代码,心中有电路)
- JSP学习心得-程序员技术浅谈
- NUMA与英特尔下一代Nehalem处理器学习心得(1)---来自CSDN
- 学习心得
- 《算法导论》学习心得(五)—— 快排(Java)
- BOA学习心得(3)
- 脉冲压缩与离散傅里叶变换学习心得
- 红外线吉普车学习心得
- linux 学习心得(1)
- 学习心得
- 学习Java心得体会