你好,你的回答有用Verilog写的调试成功的PWM程序,可以麻烦你发给我一份参考一下吗,谢谢你了,非常感谢

QQ账号1224785039... QQ账号1224785039 展开
 我来答
huzi2099
2014-06-26 · TA获得超过1172个赞
知道小有建树答主
回答量:1887
采纳率:82%
帮助的人:642万
展开全部
`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

这个是以前写的加了好多可能没有用的东西,简单说就是一个计数,一个比较器输出设定值和计数值的比较结果,不复杂的.
追问
谢谢,那个比较器模块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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式