(转)Q格式的转换问题与移位

浮点数转换为Q格式,

(1)根据浮点数的数值范围确定选用哪一种Q格式,以下为Q格式对应的范围,

Q15        -1≤x≤0.9999695
Q14      -2≤x≤1.9999390
Q13          -4≤x≤3.9998779
 Q12           -8≤x≤7.9997559
Q11           -16≤x≤15.9995117
 Q10      -32≤x≤31.9990234
Q9-64≤x≤63.9980469
Q8  -128≤x≤127.9960938
Q7-256≤x≤255.9921875
Q6-512≤x≤511.9804375
Q5-1024≤x≤1023.96875
Q4 -2048≤x≤2047.9375
Q3 -4096≤x≤4095.875
Q2-8192≤x≤8191.75
Q1 -16384≤x≤16383.5
Q0 -32768≤x≤32767

 

(2)浮点数转换为Q格式

根据确定Q格式,如数0.866为Q15,转换为Q15格式只需乘2的15次方。

  例如:假设数据存储空间为2个字节,0.333×2^15=10911=0x2A9F,0.333的所有运算就可以用0x2A9F表示,同理10911×2^(-15)=0.332977294921875,可以看出浮点数据通过Q格式转化后是有误差的。

 

Q15数据转化为浮点数据,将数据除以2^15。

 

Q格式的运算
  1> 定点加减法:须转换成相同的Q格式才能加减

 
  2> 定点乘法:不同Q格式的数据相乘,相当于Q值相加,即Q15数据乘以Q10数据后的结果是Q25格式的数据

 
  3> 定点除法:不同Q格式的数据相除,相当于Q值相减

 
  4> 定点左移:左移相当于Q值增加

 
  5> 定点右移:右移相当于Q减少

移位:做移位运算之前需要保证,每一次运算的Q格式结果,同时还需要随时调整数据的Q格式,方便下一次运算,保证不会产生溢出。

 
--------------------- 
来源:CSDN 
原文:https://blog.csdn.net/HengZo/article/details/50255563 
 

  • 4
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,我们需要明确这个8位并行-串行转换电路的功能,即将8位并行输入数据转换为串行输出数据。 以下是一个简单的8位并行-串行转换电路的设计: 1. 首先,将8位并行输入数据连接到8个D触发器的D端,将时钟信号连接到所有D触发器的时钟端。 2. 将D触发器的Q输出连接到下一个D触发器的D端,直到最后一个D触发器的Q输出。 3. 将最后一个D触发器的Q输出连接到串行输出端,这样就可以将8位并行输入数据转换为串行输出数据了。 下面是具体的电路图和Verilog代码实现: 电路图: ![8位并行-串行转换电路](https://img-blog.csdn.net/20180726205307999?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2d1aWQwNzE2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/85) Verilog代码: ```verilog module parallel_to_serial( input [7:0] parallel_in, // 8位并行输入数据 input clk, // 时钟信号 output serial_out // 串行输出数据 ); reg [7:0] parallel_reg; // 并行输入数据寄存器 reg [7:0] shift_reg; // 移位寄存器 reg [2:0] count; // 计数器 always @ (posedge clk) begin parallel_reg <= parallel_in; // 并行输入数据寄存器存储并行输入数据 shift_reg <= {shift_reg[6:0], parallel_reg[7]}; // 移位寄存器向左移动一位,将并行输入数据最高位存入移位寄存器最低位 count <= count + 1; // 计数器加1 end assign serial_out = shift_reg[0]; // 串行输出数据移位寄存器最低位 endmodule ``` 这样,我们就完成了一个简单的8位并行-串行转换电路的设计和Verilog代码实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值