vhdl分频器是什么意思 vhdl分频器的作用原理


vhdl分频器是什么意思 vhdl分频器的作用原理


题简介:
内容:使用Verilog编写一个分频器;
来源:仿真得出,暂未实践;
作用:使用Verilog编写一个分频器;
仿真环境:Quartus 11.0;
日期:2019-03-15;
=====================分割线========================
立题详解:
对CPLD或FPGA而言,暂时接触过的开发语言只有VHDL和Verilog;
个人而言,见到很多同事喜欢使用Verilog,因此也随波逐流,开始复习Verilog,本次使用Verilog编写一个分频器;思路很简单,实现2个分频器及占空比控制;
网上资料很多,属于最基础的入门级代码,和学习C/C时,学习输出“printf(“hello world”)”差不多,当然,后续我们还是需要不断进步,做到“printf(“\nhello world\n”)”、“cout<<“hello world”< 1、编写代码
对Verilog代码如下:
module tester(clk,rst_n,fm_1,fm_2);
input wire clk;//clock signal
input rst_n; // reset signal
output fm_1; //out signal for process 1
output fm_2; //out signal for process 2
reg [7:0]cnt_1;//cnt for process 1
reg [7:0]cnt_2;//cnt for process 2
always @(posedge clk or negedge rst_n)
if(!rst_n) cnt_1 <= 8’d0;
else if(cnt_1 <= 8’d255) cnt_1 <= cnt_11;
else cnt_1 <= 8’d0;
assign fm_1 = (cnt_1 <= 128)? 1’b1:1’b0;
always @(posedge clk or negedge rst_n)
if(!rst_n) cnt_2 <= 8’d0;
else if(cnt_2 <= 8’d49) cnt_2 <= cnt_21;
else cnt_2 <= 8’d0;
assign fm_2 = (cnt_2 <= 25)? 1’b1:1’b0;
endmodule
如上所示,通过代码构建2个分频计数器,见解如下:
i)、fm_1的分频系数为PSC1=255 1=256;占空比约为:128/256=50%;
ii)、fm_2的分频系数为PSC1=49 1=50;占空比约为:25/50=50%;
重点:可通过修改” if(cnt_2 <= 8’dxx)”的”xx”修改分频系数;修改cnt_1/cnt_2的值修改占空比;
需特别注意:前面定义“reg类型”时,已经确定了数据值范围,如上例中,使用为“reg [7:0]cnt_1;”,即其只有8bit数据,最大值为2^8=256;若分频系数超过十进制的256,将会出现数据溢出错误;
2、编译代码
编译结果如下所示:
其中指示了使用的主控FPGA芯片、Logice Element使用比例等信息;
3、查看RTL级
构建而成的RTL视图如下所示:
如上图所示,内部通过综合后,得出对应的RTL级连接图;
4、分配PIN管脚
然后分配FPGA-Pin管脚,此处随意分配,如下所示:
5、再次编译
编译结果如下所示:
6、再次查看RTL级
此步骤不为必要步骤,视个人习惯而定;构从的RTL视图如下所示:
7、后续介绍:
至此,对简单的代码,可以直接使用下载器进行下载实测;正规方法,应该对其进行编写Test Bench进行仿真分析;此内容为后续介绍;
【vhdl分频器是什么意思 vhdl分频器的作用原理】

    推荐阅读