数控分频verilog
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EDA实验报告
数控分频器
实验目的
1.掌握数控分频器的工作原理并能够用virlog语言编写代码,熟悉EDA6000实验箱的
使用方法。
2.进一步熟悉quartusII建立程序编译、仿真及下载的操作流程并学会数控分频器的
V erilog硬件设计
实验步骤
1.新建V erilog工程,编写代码并保存至与模块名对应的文件夹。注意:项目应存为系
统盘以外的盘内,路径中不含中文字符。
2.编译程序,编译无误后,在【tools】里面选择RTL视,观察电路结构。
3.新建波形文件进行仿真。保存时要和源程序存放在同一目录下。设置好输入波形参数
后,开始仿真。在仿真后输入输出波形中观察逻辑关系是否正确。
4.将实验箱和PC合理连接起来。打开EDA6000软件,设置好芯片类型为ACEX1K
(EP1K30TC144-3),载入模式9.
5.根据EDA6000界面内管脚对应芯片的实际管脚在QUARTUSII里面设定
管脚号并检查无误。
6.将程序下载至FPGA内,并在EDA6000软件界面内进行验证测试。
程序代码1
/////偶数分频占空比50%,奇数分频没做要求//////////
module divider(clk,data,fout); //数控分频器
input clk; //时钟输入
input[7:0]data; //预置数控分频数(对应的十进制数)
output fout; //分频输出
reg [7:0]m;
reg cout1;
always @(posedge clk)
begin
if(m==data-1)begin m<=0;cout1=~cout1;end
else m<=m+1;
if(m==(data-1)/2)begin cout1=~cout1;end
else begin cout1<=cout1;end
end
assign fout=cout1;
endmodule
/////奇数分频占空比50%//////////////////////////////////// ////////// module divider1(clk,data,fout,cout1,cout2); //数控分频器input clk; //时钟输入input[7:0]data; //预置分频数output fout,cout1,cout2; //分频输出reg [7:0]m,n;
reg cout1,cout2;
wire fout;
assign fout=cout1|cout2;
always @(posedge clk)
begin
if(m==data-1)begin m<=0;cout1=~cout1;end
else m<=m+1;
if(m==(data-1)/2)begin cout1=~cout1;end
else begin cout1<=cout1;end
end
always @(negedge clk)
begin
if(n==data-1)begin n<=0;cout2=~cout2;end
else n<=n+1;
if(n==(data-1)/2)begin cout2=~cout2;end
else begin cout2<=cout2;end
end
endmodule编译结果1