波形数据有符号数和无符号数转换

在fpga做数字信号处理时,经常会遇到这个转换的问题,比如我的ADC采集的数据和DAC输出的数据采用的都是无符号数,但在使用一些ip核比如dds、fir、fft等的时候,需要使用的是有符号数,因此就需要这样的转换,并且保证波形和原来一致。

1.无符号转有符号(举例)

wire signed [13:0] ori_wave;
assign ori_wave = (sin_1k>8192)?{sin_1k-8192}:{sin_1k+8192};
wire signed [13:0] carry_wave;
assign carry_wave = (sin_10m>8192)?{sin_10m-8192}:{sin_10m+8192};   

adc采集 

assign adc_clk = clk;
wire signed [11:0] adc_data_signed;  // ADC采样数据有符号化
reg [11:0] adc_data_trans;
always@(posedge clk) begin
    adc_data_trans <= 12'd4095-adc_data;
end
assign adc_data_signed = (adc_data_trans>2047)?{adc_data_trans-2047}:{adc_data_trans+2047};

 

2.有符号转无符号

wire signed [15:0] dout; // 滤波器输出
 
// 转化成无符号数给DAC
assign dac_data = dout[15:2] + 14'd8192;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值