音频变调技术

今天看到群里有人讨论这个问题,记录一下。

主要内容转自:http://www.cnblogs.com/welen/p/3782896.html

变调和变速原理

自然语音的产生可以简化为图2-1模型,激励源出来的声门波信号与声道模型进行卷积,最后通过嘴唇辐射模型产生语音。其中,激励源决定说话人的基频的大小,即音调的高低。声道模型反映“润色”的频谱信息,具体的讲,共振峰决定了语义信息,谐波分布决定了音色,单位时间的音节数决定了语速。

 

图2-1 语音产生模型

下面将根据语音产生模型来阐述变速变调的基本原理。

变速变调的改变可以包括变速不变调和变调不变速两个部分。

语音变速不变调是指保持音调和语义保持不变,语速变快或变慢[28]。该过程表现为语谱图在时间轴上如手风琴般压缩或者扩展。那也就是说,基频值几乎不变,对应于音调不变;整个时间过程被压缩或者扩展,声门周期的数目减小或者增加,即声道运动速率发生改变,语速也随之变化。对应于语音产生模型,激励和系统经历与原始发音情况几乎相同的状态,但持续时间相比原来或长或短[29]

严格地讲,基频和音调是两个不同的概念,基频是指声带振动的频率,音调是指人类对基频的主观感知,但是两者变化基本一致,即基频越高,音调越高,基频越低,音调越低,音调是由基频决定的[30]。因此,语音变调不变速就是指改变说话人基频的大小[44],同时保持语速和语义不变,即保持短时频谱包络(共振峰的位置和带宽)和时间过程基本不变[31]。对应于语音产生模型,变调改变了激励源;声道模型的共振峰参数几乎不变,保证了语义和语速不变。

综上所述,变速改变声道运动速率,力求保持激励源不变;变调改变激励源,力求保持声道的共振峰信息不变。但是声源和声道不是相互独立的,在改变声源时,必然也会非线性的影响声道,同样地,改变声道时也会或多或少的影响声源,两者之间相互影响,相互作用。

 

变调不变速方法

变调的方法也可以分为三类:时域法、频域法、参量法。

时域法中,Crochiere等人于1983年提出了重采样的方法[42],该方法是实现变速变调最简单、最常用的方法之一。

假设重采样因子为P/Q,其中,P为上采样因子,Q为下采样因子。上采样过程就是往原始信号相邻两点间内插P-1个采样点,这样使得基音周期变为原来的P倍,频谱压缩为原来的1/P倍,时长变为原来的P倍,即基频变为原来的1/P倍,音调降为原来的1/P倍,语速变为原来的1/P倍。

同样地,下采样过程就是每隔Q-1个点进行抽取,这样会使得基音周期长度为原来的1/Q倍,频谱扩展为原来的Q倍,时长变为原来的1/Q倍,即基频变为原来的Q倍,音调升为原来的Q倍,语速变为原来的Q倍。

综合上述两个过程,通过P/Q倍的重采样后,保持播放速率不变,重采样语音语速和音调都变为原来的Q/P倍[43]

为了实现变调不变速,可以通过各种变速不变调处理与重采样相结合的方法[44]。如图2-4所示,变速不变调处理使语速变为原来的P/Q倍,得到输出信号y(n),然后对y(n)进行P/Q倍重采样处理,这样就得到语速正常,音调变为原来Q/P倍的最终输出语音z(n)。

频域法中比较简单的处理就是直接对信号频谱进行插值或者抽取,实现各频率分量的扩展或者压缩。国内的研究者李力利、张晓蕊等人分别对频域的插值和抽取的方法进行了研究和扩展,这种方法的缺点在于:内插会引入不需要的频率,从而大大影响音质,变调后会有部分失真[43]。另外,比较典型的方法是利用短时傅里叶变换原理,估计出短时帧的瞬时频率,再乘以伸缩系数进行频谱伸缩[44]

参量法中最具代表性的方法是基于正弦模型原理。正弦模型[45]是由Quatier等人在1980年提出,它是目前应用最广泛的语音模型。该模型将信号看作是一系列随时间变化的正弦信号叠加。 很显然,时间规整后瞬时频率不变,保证了音调不变,但是时间过程扩展为原来的倍。很显然,变调不变速处理后,各个频率成分随系数拉伸或者收缩。对应于浊音,为随时间变化的第一谐波,即基频;其他频率成分对应于其它谐波。

由上分析可知,基于正弦模型的变调方法最大难点在于提高谐波分析的精确度,降低参数估计的复杂度[46]

 

变速不变调方法

语音变速不变调,即语音时长规整,是指不改变原说话人的音调及语义信息,只改变说话人的语速。

语音变速不变调算法有三大类:时域法、频域法、参量法,如表2-1所示。 

表2-1 变速不变调算法分类

时域法

频域法

参量法

剪贴法

LSEE-MSTFTM

相位声码器

SOLA、SOLA-FS

 

正弦模型

TD-PSOLA

 

 

时域法包括:剪贴法、同步波形叠加法(Synchronized Overlap-Add, SOLA)、固定同步波形叠加法(Synchronized Overlap-Add and Fixed Synthesis, SOLAFS)、时域基音同步叠加法(Time-Domain Pitch Synchronized Overlap-Add, TD-PSOLA) 波形相似叠加法(waveform similarity overlap-and-add, WSOLA)等。

剪贴法[32]由Fairbanks等人在1958年提出,其基本思想是将语音划分为若干连续不重叠帧,然后重复或者丢弃其中某些语音帧,来实现语速变慢或者加快。

这种方法只是简单的重复或者丢弃语音帧,这样会造成相邻两帧之间波形不连续,基音发生断裂,因此语音质量较差。

为了减小波形不连续现象,Gabor等人改善了剪贴法,在相邻两帧部分进行平滑处理,但是基音断裂现象仍然存在。

 

为了在改善波形不连续的同时,减小基音断裂现象,S.Roucos等人在提出了同步波形叠加法(SOLA)[33]。该算法主要分为分解、合成两个阶段。 

分解阶段完成原始语音信号的分帧任务,为了减小不连续现象,一般在分帧的同时进行加窗平滑处理,分解后的所有帧用于合成变速语音,这里假设帧长为N,分析帧移为Sa。合成阶段则可以分成两个步骤:

第一步,确定初步合成重叠距离。按照变速因子a=Ss/Sa,改变分解阶段相邻两帧的帧移距离,Ss=Sa*a,即保持分解阶段的第一帧位置不变,移动之后的各帧,使得相邻两帧的距离由为Sa变为Ss,这样便可获得初步合成帧。

第二步,确定最终合成帧的起始位置。如果将初步合成帧直接进行叠加合成,则会造成基音断裂。为了减小该现象,通过在已合成第m帧第Ss个采样点的邻域[-kmax, kmax]内移动搜索和分解阶段第m帧信号的波形相关最大的位置k(m),如式2-1,确定最终合成帧的初始位置,保证叠加部分波形相似,减小基频断裂。

                   (2-1)

其中,k(m) [-kmax, kmax],表示搜索偏移量,表示原始语音信号,表示合成变速后的输出语音信号,L表示分解阶段第m帧信号与已合成信号的重叠区域长度。

由于偏移量k(m)的存在,所以SOLA算法不能精确的改变语音的时间长度。

为了解决该问题,D.J.Hejna提出了固定同步波形叠加法(SOLAFS)[34],该算法与SOLA算法很相似,不同的是在合成时固定了合成步长Ss,而在分解阶段第m帧的邻域[-kmax, kmax]内移动搜索与已合成第m帧信号波形相关最大的位置k(m)。即使式2-2最大。

     

为了进一步达到基音同步的目的,Moulines提出了基音同步波形叠加算法(PSOLA)[35],著名的语音分析软件Praat的变速功能就是基于此原理[36]。在该算法中,变速和变调是两个独立的过程,由不同的参数控制。其主要做法是首先进行基音同步分析,标记基音周期一系列位置点,以这些标记为中心,将原始语音划分成若干合成语音单元。通过重复或者省略合成单元来实现语速时长的控制,通过改变相邻合成单元的重叠长度或者重采样结合变速来改变语音的基频。该算法主要缺点有两点,首先基音周期及其起始点的判定误差会严重影响PSOLA技术的效果,另外计算量大,很难满足实时的变速与变调处理。

同样地,为了减小基音断裂和相位不连续问题,Verhelst和Roelands 提出了波形相似叠加法(WSOLA)[37],该方法计算量低于PSOLA,同时输出的语音质量高。Grofit对该方法进行了改进,使其也适用于音乐信号的变速处理[38]

频域法中最具代表性的方法是LSEE-MSTFTM(The Least-Square Error Estimation From the Modified Short-Time Fourier Transform Magnitude)[39],该算法是基于短时傅里叶变换来实现的,利用最小均方误差原则,寻找一个时域信号的短时傅里叶变换幅度谱逼近理想变速信号的频谱。

参数法是指对语音信号建立模型,然后根据需要修改模型相关参数来达到改变音调和语速的目的。它包括相位声码器[40]和正弦模型法。相位声码器是将语音通过带通滤波器组分解成若干正弦信号,然后对正弦信号随时间变化的幅度和相位通过内插和抽取进行时域压扩,最后经过合成便完成变速不变调。正弦模型法与相位声码器方法相似,需要估算出模型的瞬时幅度、瞬时频率、瞬时相位等参量,合成效果较好,但是复杂度较高。


参考这个链接的一个例子。用的是变调不变速技术,主要是频域相位伸缩+重采样。

code:

function y = pvoc(x, r, n)
% y = pvoc(x, r, n)  Time-scale a signal to r times faster with phase vocoder
%      x is an input sound. n is the FFT size, defaults to 1024.  
%      Calculate the 25%-overlapped STFT, squeeze it by a factor of r, 
%      inverse spegram.
% 2000-12-05, 2002-02-13 dpwe@ee.columbia.edu.  Uses pvsample, stft, istft
% $Header: /home/empire6/dpwe/public_html/resources/matlab/pvoc/RCS/pvoc.m,v 1.3 2011/02/08 21:08:39 dpwe Exp $if nargin < 3n = 1024;
end% With hann windowing on both input and output, 
% we need 25% window overlap for smooth reconstruction
hop = n/4;
% Effect of hanns at both ends is a cumulated cos^2 window (for
% r = 1 anyway); need to scale magnitudes by 2/3 for
% identity input/output
%scf = 2/3;
% 2011-02-07: this factor is now included in istft.m
scf = 1.0;% Calculate the basic STFT, magnitude scaled
X = scf * stft(x', n, n, hop);% Calculate the new timebase samples
[rows, cols] = size(X);
t = 0:r:(cols-2);
% Have to stay two cols off end because (a) counting from zero, and 
% (b) need col n AND col n+1 to interpolate% Generate the new spectrogram
X2 = pvsample(X, t, hop);% Invert to a waveform
y = istft(X2, n, n, hop)';

  pvsample:phase vecoder sample

function c = pvsample(b, t, hop)
% c = pvsample(b, t, hop)   Interpolate an STFT array according to the 'phase vocoder'
%     b is an STFT array, of the form generated by 'specgram'.
%     t is a vector of (real) time-samples, which specifies a path through 
%     the time-base defined by the columns of b.  For each value of t, 
%     the spectral magnitudes in the columns of b are interpolated, and 
%     the phase difference between the successive columns of b is 
%     calculated; a new column is created in the output array c that 
%     preserves this per-step phase advance in each bin.
%     hop is the STFT hop size, defaults to N/2, where N is the FFT size
%     and b has N/2+1 rows.  hop is needed to calculate the 'null' phase 
%     advance expected in each bin.
%     Note: t is defined relative to a zero origin, so 0.1 is 90% of 
%     the first column of b, plus 10% of the second.
% 2000-12-05 dpwe@ee.columbia.edu
% $Header: /homes/dpwe/public_html/resources/matlab/dtw/../RCS/pvsample.m,v 1.3 2003/04/09 03:17:10 dpwe Exp $if nargin < 3hop = 0;
end[rows,cols] = size(b);N = 2*(rows-1);if hop == 0% default valuehop = N/2;
end% Empty output array
c = zeros(rows, length(t));% Expected phase advance in each bin
dphi = zeros(1,N/2+1);
dphi(2:(1 + N/2)) = (2*pi*hop)./(N./(1:(N/2)));% Phase accumulator
% Preset to phase of first frame for perfect reconstruction
% in case of 1:1 time scaling
ph = angle(b(:,1));% Append a 'safety' column on to the end of b to avoid problems 
% taking *exactly* the last frame (i.e. 1*b(:,cols)+0*b(:,cols+1))
b = [b,zeros(rows,1)];ocol = 1;
for tt = t% Grab the two columns of bbcols = b(:,floor(tt)+[1 2]);tf = tt - floor(tt);bmag = (1-tf)*abs(bcols(:,1)) + tf*(abs(bcols(:,2)));% calculate phase advancedp = angle(bcols(:,2)) - angle(bcols(:,1)) - dphi';% Reduce to -pi:pi rangedp = dp - 2 * pi * round(dp/(2*pi));% Save the columnc(:,ocol) = bmag .* exp(j*ph);% Cumulate phase, ready for next frameph = ph + dphi' + dp;ocol = ocol+1;
end

  STFT/ISTFT

function D = stft(x, f, w, h, sr)
% D = stft(X, F, W, H, SR)                       Short-time Fourier transform.
%	Returns some frames of short-term Fourier transform of x.  Each 
%	column of the result is one F-point fft (default 256); each
%	successive frame is offset by H points (W/2) until X is exhausted.  
%       Data is hann-windowed at W pts (F), or rectangular if W=0, or 
%       with W if it is a vector.
%       Without output arguments, will plot like sgram (SR will get
%       axes right, defaults to 8000).
%	See also 'istft.m'.
% dpwe 1994may05.  Uses built-in 'fft'
% $Header: /home/empire6/dpwe/public_html/resources/matlab/pvoc/RCS/stft.m,v 1.4 2010/08/13 16:03:14 dpwe Exp $if nargin < 2;  f = 256; end
if nargin < 3;  w = f; end
if nargin < 4;  h = 0; end
if nargin < 5;  sr = 8000; end% expect x as a row
if size(x,1) > 1x = x';
ends = length(x);if length(w) == 1if w == 0% special case: rectangular windowwin = ones(1,f);elseif rem(w, 2) == 0   % force window to be odd-lenw = w + 1;endhalflen = (w-1)/2;halff = f/2;   % midpoint of winhalfwin = 0.5 * ( 1 + cos( pi * (0:halflen)/halflen));win = zeros(1, f);acthalflen = min(halff, halflen);win((halff+1):(halff+acthalflen)) = halfwin(1:acthalflen);win((halff+1):-1:(halff-acthalflen+2)) = halfwin(1:acthalflen);end
elsewin = w;
endw = length(win);
% now can set default hop
if h == 0h = floor(w/2);
endc = 1;% pre-allocate output array
d = zeros((1+f/2),1+fix((s-f)/h));for b = 0:h:(s-f)u = win.*x((b+1):(b+f));t = fft(u);d(:,c) = t(1:(1+f/2))';c = c+1;
end;% If no output arguments, plot a spectrogram
if nargout == 0tt = [0:size(d,2)]*h/sr;ff = [0:size(d,1)]*sr/f;imagesc(tt,ff,20*log10(abs(d)));axis('xy');xlabel('time / sec');ylabel('freq / Hz')% leave output variable D undefined
else% Otherwise, no plot, but return STFTD = d;
end%================
function x = istft(d, ftsize, w, h)
% X = istft(D, F, W, H)                   Inverse short-time Fourier transform.
%	Performs overlap-add resynthesis from the short-time Fourier transform 
%	data in D.  Each column of D is taken as the result of an F-point 
%	fft; each successive frame was offset by H points (default
%	W/2, or F/2 if W==0). Data is hann-windowed at W pts, or 
%       W = 0 gives a rectangular window (default); 
%       W as a vector uses that as window.
%       This version scales the output so the loop gain is 1.0 for
%       either hann-win an-syn with 25% overlap, or hann-win on
%       analysis and rect-win (W=0) on synthesis with 50% overlap.
% dpwe 1994may24.  Uses built-in 'ifft' etc.
% $Header: /home/empire6/dpwe/public_html/resources/matlab/pvoc/RCS/istft.m,v 1.5 2010/08/12 20:39:42 dpwe Exp $if nargin < 2; ftsize = 2*(size(d,1)-1); end
if nargin < 3; w = 0; end
if nargin < 4; h = 0; end  % will become winlen/2 laters = size(d);
if s(1) ~= (ftsize/2)+1error('number of rows should be fftsize/2+1')
end
cols = s(2);if length(w) == 1if w == 0% special case: rectangular windowwin = ones(1,ftsize);elseif rem(w, 2) == 0   % force window to be odd-lenw = w + 1;endhalflen = (w-1)/2;halff = ftsize/2;halfwin = 0.5 * ( 1 + cos( pi * (0:halflen)/halflen));win = zeros(1, ftsize);acthalflen = min(halff, halflen);win((halff+1):(halff+acthalflen)) = halfwin(1:acthalflen);win((halff+1):-1:(halff-acthalflen+2)) = halfwin(1:acthalflen);% 2009-01-06: Make stft-istft loop be identity for 25% hopwin = 2/3*win;end
elsewin = w;
endw = length(win);
% now can set default hop
if h == 0 h = floor(w/2);
endxlen = ftsize + (cols-1)*h;
x = zeros(1,xlen);for b = 0:h:(h*(cols-1))ft = d(:,1+b/h)';ft = [ft, conj(ft([((ftsize/2)):-1:2]))];px = real(ifft(ft));x((b+1):(b+ftsize)) = x((b+1):(b+ftsize))+px.*win;
end;

  测试code,因为变为Q = 5倍数,参数设置1/Q:

[d,sr]=wavread('aa.wav'); 
e = pvoc(d, 0.2); 
f = resample(e,1,5); % NB: 0.2 = 1/5 

  结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/242991.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SystemVerilog笔记

SystemVerilog笔记 使用&#xff08;$isunknown&#xff09;操作符&#xff0c;可以在表达式的任意位出现X或Z时返回1。$size函数返回数组的宽度关联数组switch&#xff0c;以实现从字符串到数字的映射。函数exists()来检查元素是否存在。方法unique返回的是在数组中具有唯一值…

收入和贷款有什么关系?

说到贷款&#xff0c;收入是至关重要的一环&#xff0c;收入在贷款审核过程中有着举足轻重的作用。那么具体来说&#xff0c;贷款到底和收入有什么关系呢&#xff1f;贷款审核考察借款人的收入目的是为了核实借款人的偿还能力&#xff0c;因此贷款机构不仅要考核借款人的收入&a…

银行系普惠和小贷系普惠,哪个贷款更靠谱?

2017年5月26日银监会发布了《大中型商业银行设立普惠金融事业部实施方案》&#xff0c;《实施方案》明确了大中型商业银行设立普惠金融事业部的总体目标&#xff0c;通过建立适应普惠金融服务需要的事业部管理体制&#xff0c;构建科学的治理机制和组织架构&#xff0c;健全专业…

并串 转换

并串 转换 题目描述 设计一个模块进行并串转换,要求每四位d输为转到一位dout输出,输出valid_in表示此时的输入有效 输入描述: clk为时钟 rst为低电平复位 d 信号输入 输出描述: dout 信号输出 valid_in 表示输入有效 题目解读 串并转换操作是非常灵活的操作,核心思想就…

H.264码流解析 一个SPS的nalu及获取视频的分辨率

00 00 00 01 67 42 00 28 E9 00 A0 0B 77 FE 00 02 00 03 C4 80 00 00 03 00 80 00 00 1A 4D 88 10 94 00 00 00 01 00 00 00 01为NALu头&#xff0c;‍其余码流由十六进制转为二进制 67 0110 0111 42 0100 0010 00 0000 0000 28 0010 1000 E9 1110 1001 00 0000 0000 A…

小额贷款利息违法吗?

我们经常听到很多朋友说&#xff0c;小额贷款利息高&#xff0c;认为小额贷款的利息是高利贷&#xff0c;不合法。那到底小额贷款算不算高利贷呢&#xff0c;是不是合法的呢&#xff1f;在解释这个问题之前&#xff0c;我们先来看下国家法律对合法利息的定义。《最高人民法院关…

什么样的征信才算是好的?

有过贷款的朋友都知道征信报告对贷款有很大的影响&#xff0c;有时候贷款的前期工作都准备好了&#xff0c;突然发现征信有问题&#xff0c;结果贷款就黄了。可见征信报告对贷款的作用还是很大的&#xff0c;贷款机构之所以会看重征信记录&#xff0c;因为它是一个人过去信用的…

时钟 切换

时钟 切换 题目描述 存在两个同步的倍频时钟clk0 clk1,已知clk0是clk1的二倍频,现在要设计一个切换电路,sel选择时候进行切换,要求没有毛刺。 信号示意图 题目解读 通过在每个时钟源的选择路径中插入一个负边沿触发的D触发器,可以确保时钟在高电平时,输出保持不变。 通…

动态时间规整-DTW算法

作者&#xff1a;桂。 时间&#xff1a;2017-05-31 16:17:29 链接&#xff1a;http://www.cnblogs.com/xingshansi/p/6924911.html 前言 动态时间规整&#xff08;Dynamic Time Warping&#xff0c;DTW&#xff09;是孤立词识别的早期技术&#xff0c;梳理一下&#xff0c;主…

到底逾期几次才会影响贷款申请?

大家都知道&#xff0c;申请贷款时&#xff0c;贷款机构会重点考察借款人的征信记录&#xff0c;那么&#xff0c;评估标准是什么呢&#xff1f;到底逾期几次才会影响到贷款的申请&#xff1f;在信贷行业&#xff0c;对逾期标准的评判一般是按“连三累六”的原则&#xff0c;简…

状态机与时钟分频

状态机与时钟分频 题目描述 使用状态机实现时钟分频,要求对时钟进行四分频,占空比为0.25 信号示意图 题目解读 首先考虑输入输出,作为分频电路,有一个时钟输入端,clk,输出端div3,再加一个复位端(这里不加也可)所以输入 clk,rst输出 clk_out再考虑状态转换的问题。4分…

candence 16.6 win8.1 x64 破解

测试机系统截图&#xff1a; 破解说明具体的步骤&#xff1a; 1、安装licensemanager&#xff0c;问license时&#xff0c;单击cancel&#xff0c;然后finish. 2、接下来安装cadence的product,即第二项,直到结束. 2.1 安装cadence16.6最新补丁Hotfix_SPB16.60.003_wint_1of1.ex…

矢量量化(VQ)

作者&#xff1a;桂。 时间&#xff1a;2017-05-31 21:14:56 链接&#xff1a;http://www.cnblogs.com/xingshansi/p/6925955.html 前言 VQ&#xff08;Vector Quantization&#xff09;是一个常用的压缩技术&#xff0c;本文主要回顾&#xff1a; 1&#xff09;VQ原理 2&am…

超前进位加法器

超前进位加法器 题目描述 求两个四位的数据编写一个四位的超前进位加法器,建议使用子模块 提示:超前进位加法器的位公式如下 这里‘+’ ‘’符号不是‘加’和‘乘’,是‘或’和 ‘与’ 题目解析 题目要求 4级可以表示为如下,这里P和G是传播信号和生成信号: `timesc…

哪些职业申请贷款比较难?

贷款一般会重点考核借款人的收入&#xff0c;信用&#xff0c;资产&#xff0c; 工作等基本信息&#xff0c;有时候明明借款人有着较高的收入&#xff0c;信用也良好&#xff0c;可是最后还是被拒绝了。这其中有很大一部分是跟借款人的职业有一定的关系。那到底哪些职业的人贷款…

常用音频软件:Wavesufer

作者&#xff1a;桂。 时间&#xff1a;2017-06-02 10:23:39 链接&#xff1a;http://www.cnblogs.com/xingshansi/p/6932408.html 前言 只列举两个自己用过的&#xff08;wavesufer和praat&#xff09;&#xff0c;如果有其他更好的软件&#xff0c;还希望各位留下链接。 本…

等额本息和等额本金,哪个还款方式更划算?

贷款还款方式有很多种&#xff0c;其中等额本息和等额本金最常见的两种还款方式。但是有很多朋友对这两种还款方式没有概念&#xff0c;甚至分不清这两者到底有什么区别&#xff0c;所以今天我们就跟大家来详细解说下&#xff0c;什么是等额本金&#xff0c;什么是等额本息&…

全 加 器

全加器 题目描述 请用题目提供的半加器实现全加器电路 timescale 1ns/1nsmodule add_half(input A ,input B ,output wire S ,output wire C );assign S A ^ B; assign C A & B; endmodule/*****************…

申请表怎么填才能提高信用卡额度?

对于大多数朋友来说&#xff0c;申请信用卡都希望下卡的额度能高一些&#xff0c;但是对于很多人来说&#xff0c;最终下卡的额度一般在5000-2万之间比较多。其实信用卡的额度和申请人的综合评分有很大的关系&#xff0c;综合评分越高额度可能会越大&#xff0c;而综合评分与申…

串行进位加法器

串行进位加法器 题目描述 ② 请用全加器电路①实现串行进位的4位全加器电路 题目解读 可将4个全加器串行相连,实现四位数串行进位加法器。原理图如下: `timescale 1ns/1nsmodule add_half(input A ,input B ,output wire S ,…