| 版主: 51FPGA | 
| xilinx论坛  
 
						最后登陆时间:2015-03-19 10:58:07 | 现在我要实现以下的算法,遇到了问题,首先是小数乘法的问题。想要实现的功能是通过迭代,Y周期性输出01010101.。。。。。 算法如下: F(t) = KF*F(t-1) + S; E(t) = KE*E(t-1) + VT*Y; if F(t)>E(t-1), Y =1;else Y=0; 
 其中KF、KE都是小数,那么怎样表示呢?verilog不支持小数啊?用定标表示不是很理解啊,小数定标了,那其他原来的整数呢?? verilog代码如下: module pcnn(clk,rst,S,Y); input clk,rst; input[7:0] S; output Y; 
 parameter KF = 108,KE = 239,VT = 5120;//Q8 
 //reg Y_reg; reg[15:0] F_reg; reg[15:0] E_reg; 
 wire Y; wire[15:0] F; wire[15:0] E; 
 assign F = KF*F_reg + S; //zuhe assign E = Y?KE*E_reg:VT; //assign E = KE*E_reg + (Y?VT:0); assign Y = (F>E_reg)? 1 : 0;//E_reg:number of the last time,not E. 
 always@(posedge clk) //shixu begin if(!rst) begin //Y_reg <= 0; F_reg <= 0; E_reg <= VT; end else //Y_reg <= Y; F_reg <= F; E_reg <= E; end endmodule<ignore_js_op> 
	 | 
| 共1条 1/1 1 |