Verilog HDL 学习篇——任意时钟分频
2013-02-28 12:41
369 查看
这个本来是作为驱动黑金板子上的蜂鸣器的,起初以为是有源的,用下面的代码改变其驱动频率来得到不同频率的声音,结果失败,原因很简单,它是有源的
,拉低就会响,就单独列成时钟分频吧,注意此处为门控时钟。
此处使用了时钟分频模块,根据相位累加原理,
K=F0*2^N/Fc
K :分频系数;Fo:输出频率;Fc:模块频率;N计数位宽;
理论上可以任意分频,不过实际上,大部分频率都是通过相位抖动的方式达到的
RTL视图
,拉低就会响,就单独列成时钟分频吧,注意此处为门控时钟。
此处使用了时钟分频模块,根据相位累加原理,
K=F0*2^N/Fc
K :分频系数;Fo:输出频率;Fc:模块频率;N计数位宽;
理论上可以任意分频,不过实际上,大部分频率都是通过相位抖动的方式达到的
module CLK_DIV_MODULE #( parameter CLK_VALUE=50000000, parameter WIDTH=32, parameter K={WIDTH{1'B0}} ) ( input CLK, input RST, input EN, output SCK ); //....................................................................................................................... reg rSCK; reg rEN; reg [WIDTH-1:0] rN; always @ (posedge CLK or negedge RST) if(!RST) begin rN<={WIDTH{1'B0}}; rSCK<=1'B0; end else begin rEN<=EN; if(!rEN) begin rN<={WIDTH{1'B0}}; rSCK<=1'B0; end else begin rN<=rN+K; if(rN<({WIDTH{1'B1}}/2)) begin rSCK<=1'B0; end else begin rSCK<=1'B1; end end end //....................................................................................................................... assign SCK=rSCK; //....................................................................................................................... endmodule
RTL视图
相关文章推荐
- Verilog HDL的时钟分频(2次方分频)
- Verilog HDL 任意整数分频
- Verilog HDL In One Day (Verilog HDL 学习的第一天)
- ALTERA DE2 之 verilog HDL 学习笔记04 -altera DE2 上 SRAM的读写
- Verilog HDL 学习笔记1-data type
- verilog 语言实现任意分频
- Verilog HDL学习笔记1
- Verilog HDL 学习篇——快速同步FIFO
- 【Verilog HDL】学习笔记
- FPGA 学习之路(六)任意分频技术
- Quartus II 与ModelSim的学习笔记(三)——Verilog HDL基础语法
- Verilog HDL语言always块未声明positive或negative导致的时钟不对准
- 时钟分频方法---verilog代码
- Verilog HDL 学习笔记3-Latch
- Verilog HDL 学习篇——UART自收自发
- [转]任意分频的verilog语言实现
- 如何在FPGA中利用Verilog实现任意倍的奇数分频
- ALTERA DE2 之 verilog HDL 学习笔记01 程序的并行
- Verilog HDL 学习篇——流水灯
- Quartus/FPGA/Verilog HDL【学习笔记001】