打印
[FPGA]

verilog小数如何表示

[复制链接]
7902|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
现在我要实现以下的算法,遇到了问题,首先是小数乘法的问题。想要实现的功能是通过迭代,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

pcnn2.jpg (40.42 KB )

pcnn2.jpg

相关帖子

沙发
lwq030736| | 2012-3-1 13:17 | 只看该作者
全是逻辑电平,没有什么小数一说
当然你可以自己定义小数点在哪,
然后乘完之后哪几位表示整数哪几位表示小数你要自己知道

使用特权

评论回复
板凳
GoldSunMonkey| | 2012-3-1 13:55 | 只看该作者
对,全凭逻辑,你觉得小数点在哪里就在哪里

使用特权

评论回复
地板
雪夜虫子| | 2012-3-1 14:06 | 只看该作者
本帖最后由 雪夜虫子 于 2015-7-23 09:33 编辑

...

使用特权

评论回复
5
GoldSunMonkey| | 2012-3-1 15:40 | 只看该作者
嗯,很好

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

136

帖子

0

粉丝