实验目的与要求
实验名称:数控分频器设计
实验目的:将4位计数器改成8位计数器形式,完成全部仿真测试和硬件测试内容
实验原理
给定计数模N,当计数到N时,对计数器发出一个清零信号,使其从头开始计数,以此循环往复如果控制的是计数器的同步清零端,则为计数器的同步清零模式.如果控制的是异步清零端,则为计数器的异步清零模式.对于给定的模M,当计数满到溢出时,或限制其计数到某一数值时,发出一个信号,控制计数器的加载预置端,使计数器加载M,如果控制的是计数器的同步加载端,则为同步加载模式,如果控制的是计数器的异步加载端,则为异步加载计数模式 1、 实验内容编辑和输入设计文件
新建文件夹——输入源程序——文件存盘 源程序
A、module FDIV0(CLK,PM,D,DOUT,RST); input CLK; input RST; input[7:0]D; output PM;
output [7:0] DOUT; reg[7:0]Q1; reg FULL;
(*synthesis,keep*)wire LD;
always @(posedge CLK or negedge RST) begin if(!RST) begin Q1<=0;
FULL<=0; end
else if(LD)
begin Q1<=Q1+1;
FULL<=0; end end
assign LD=(Q1==8'B11111111); assign PM=FULL; assign DOUT=Q1; endmodule
B、module fdiv01(CLK,PM,D,DOUT,RST); input CLK; input RST; input[7:0]D; output PM;
output [7:0] DOUT; reg[7:0]Q1; reg FULL;
(*synthesis,probe_port,keep*) wire LD;
always @(posedge CLK or posedge LD or negedge RST )begin if(!RST) begin Q1<=0;
FULL<=0; end
else if(LD) begin Q1<=D;
FULL<=1; end
else begin Q1<=Q1+1;
FULL<=0; end end
assign LD=(Q1==8'B00000000); assign PM=FULL; assign DOUT=Q1; endmodule
C、module fdiv02(CLK,PM,D); input CLK; input [7:0] D; output PM;
(*synthesis,probe_port,keep*) [7:0] Q1; reg FULL;
(*synthesis,probe_port,keep*)wire RST; always @ (posedge CLK or posedge RST)begin if (RST)begin Q1<=0;
FULL<=1; end
else begin Q1<=Q1+1;
FULL<=0; end end
assign RST = (Q1==D); assign PM=FULL;
endmodule
D、module fdiv03(CLK,PM,D); input CLK; input [7:0] D; output PM;
(*synthesis,probe_port,keep*) [7:0] Q1; reg FULL;
(*synthesis,probe_port,keep*)wire RST; always @ (posedge CLK)begin if (RST)begin Q1<=0;
FULL<=1; end
else begin Q1<=Q1+1;
FULL<=0; end end
assign RST = (Q1==D); assign PM=FULL; endmodule
2、 总结与体会创建工程
打开并建立新工程管理窗口——将设计文件加入工程中——选择目标芯片——工具设置——结束设置
3、 全程编译前约束项目设置
选择FPGA目标芯片——选择配置器件的工作方式——选择配置器件和编程方式——选择目标器件引脚端口状态——选择Verilog语言版本 4、 全程综合与编译
Processing——Start Compilation启动全程编译 5、 仿真测试
A
B
、
C、
D
实验总结与体会
通过这次实验学会了将4位计数器改成8位计数器形式,完成全部仿真测试和硬件测试内容。