马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 jamiedame 于 2012-3-28 08:35 编辑
reg [23:0] div_msb_lsb; //[23:10]存储整数,且等于fosc/bps,[9:0]存储小数,共3位10进制小数
reg [9:0] div_msb_lsb_10bit;
reg [13:0] clk_cnt,clk1_cnt,clk2_cnt;
reg [10:0] acc_result; //N_FRACT减去小数部分的累加值
parameter N_FRACT = 10; //若小数位数为1位时,N_FRACT为10;若小数位数为2位时,N_FRACT为100;其它依此类推。
wire clkn1,clkn2;
reg odd_div_en,even_div_en; always@(posedgeodd_done or posedgeeven_done) begin
if (enable_rcv_clk == 1) begin
acc_result = acc_result + N_FRACT - {1'b0 ,div_msb_lsb[9:0]}; //acc_result是11位的
if(acc_result< N_FRACT) begin //小于N_FRACT进行N+1分频,大于等于时进行N分频
if(div_msb_lsb[14] == 1'b0) begin
div_msb_lsb_10bit <= div_msb_lsb[23:14] + 10'b1;//N+1为奇数时奇分频
odd_div_en = 1;
even_div_en = 0;
end
else begin
div_msb_lsb_10bit <= div_msb_lsb[23:14] + 10'b1; //N+1为偶数时偶分频
odd_div_en = 0;
even_div_en = 1;
end
end
else begin
acc_result = acc_result - N_FRACT; //acc_result对N_FRACT取模求余
if(div_msb_lsb[14] == 1'b0) begin
div_msb_lsb_10bit <= div_msb_lsb[23:14];//N为偶数时偶分频
odd_div_en = 0;
even_div_en = 1;
end
else begin
div_msb_lsb_10bit <= div_msb_lsb[23:14];//N为奇数时奇分频
odd_div_en = 1;
even_div_en = 0;
end
end
end
end ISE综合时出现了[Xst 899] The logic for <div_msb_lsb_10bit> does not match a known FF or Latch template. 红色语句为出错语句 |