展开全部
`timescale 1ns / 1ps
`define CLOCK_COUNTER_WIDTH 15
`define COMPARE_DATA_WIDTH 15
module cpld_pwm(
input wire Reset, //信号复位或同步
input wire Clock_In, //50M时钟输入脚
input wire Counter_Mode, //计数模式 0 +1计数, 1 -1计数
/*比较模块1输入输出*/
output wire M1_Out,
output wire M1_Direction
// input [7:0] M1_Data_In,//数据线
// input wire M1_Data_Latch, //数据锁存信号
);
/*时钟计数模块*/
reg [`CLOCK_COUNTER_WIDTH:0] Clock_Counter;
always @ ( posedge Clock_In or posedge Reset)
begin
if (Reset)//复位信号
Clock_Counter=0;
else if (!Counter_Mode)
Clock_Counter = Clock_Counter + 1;
else
Clock_Counter = Clock_Counter - 1;
end
/***********************************Compare Module 1**************************************/
//比较模块
reg [`COMPARE_DATA_WIDTH:0] Compare1_Data;
Comp_Module Comp1(Clock_In,Clock_Counter[`CLOCK_COUNTER_WIDTH:0],Compare1_Data[`COMPARE_DATA_WIDTH:0],M1_Out);
endmodule
这个是以前写的加了好多可能没有用的东西,简单说就是一个计数,一个比较器输出设定值和计数值的比较结果,不复杂的.
`define CLOCK_COUNTER_WIDTH 15
`define COMPARE_DATA_WIDTH 15
module cpld_pwm(
input wire Reset, //信号复位或同步
input wire Clock_In, //50M时钟输入脚
input wire Counter_Mode, //计数模式 0 +1计数, 1 -1计数
/*比较模块1输入输出*/
output wire M1_Out,
output wire M1_Direction
// input [7:0] M1_Data_In,//数据线
// input wire M1_Data_Latch, //数据锁存信号
);
/*时钟计数模块*/
reg [`CLOCK_COUNTER_WIDTH:0] Clock_Counter;
always @ ( posedge Clock_In or posedge Reset)
begin
if (Reset)//复位信号
Clock_Counter=0;
else if (!Counter_Mode)
Clock_Counter = Clock_Counter + 1;
else
Clock_Counter = Clock_Counter - 1;
end
/***********************************Compare Module 1**************************************/
//比较模块
reg [`COMPARE_DATA_WIDTH:0] Compare1_Data;
Comp_Module Comp1(Clock_In,Clock_Counter[`CLOCK_COUNTER_WIDTH:0],Compare1_Data[`COMPARE_DATA_WIDTH:0],M1_Out);
endmodule
这个是以前写的加了好多可能没有用的东西,简单说就是一个计数,一个比较器输出设定值和计数值的比较结果,不复杂的.
追问
谢谢,那个比较器模块Comp_Module的代码能麻烦你贴出来一下吗
追答
`timescale 1ns / 1ps
//'define COMPARE_DATA_WIDTH 15//比较数据的位数
module Comp_Module (
input Clock_In,
input [15:0] Clock_Counter,
input [15:0] Compare_Data,
output Out
);
reg OutReg;
always @ ( posedge Clock_In )
begin
if (Compare_Data < Clock_Counter)
OutReg = 0;
else
OutReg = 1;
end
assign Out = OutReg;
endmodule
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询