(已解决)新手第一次写程序综合出现xst 899错误求解
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. 红色语句为出错语句
百度知道上有高手给出解决方法了,就是always@(posedgeodd_done or posedgeeven_done) 这里不能综合,修改后好了。
双沿触发器 现在一般有用这个的么
