Potrebujete pomoč za izvajanje aritmetičnih operacij!

D

Dra

Guest
Kateri je najučinkovitejši način za izvajanje naslednjih aritmetičnih operacij v HDL?

Code:eek:ceni izrazi| xy | <zinf (x, z) =-x, z <-x

x; z> x

x; drugače

 
Za | xy | <z

Let's sprejmejo x / y / z kot 8 bitov, podpisan številko kot na primer:

žice [8:0] sub_xy; / / podpisana nnumber
žice [8:0] abs_xy; / / unsigned številko
žice [9:0] sub_abs_z; / / podpisana številko

žice res; / / 1'b0: | xy | <je z false; 1'b1: res

dodeliti sub_xy = (x [7], x [7:0] ~) (y [7], y [7:0]) 1'b1; / / do xy
dodelite abs_xy = (sub_xy [8])?(~ (sub_xy [8:0) 1'b1): sub_xy [8:0];
dodeliti sub_abs_z = (1'b0, abs_xy) (~ z [7], z [7], z [7:0]) 1'b1;
dodeliti res = sub_abs_z [9];Dodano po 42 sekundah:Za: f (x, z) =-x, z <-x
x; z> x
x; drugače

To je lahko poenostavljeno to: if (z <-x)
res =-x;
else res = x;

Potem poenostaviti, da: če (z x <0)
res =-x;
else res = x;

Let's tudi x / z kot 8 bitov signd številka, kot na primer:

žice [8:0] x_bar; / / podpisana številko
žice [8:0] add_zx; / / podpisana številko
žice [8:0] res; / / singed številko

dodelite x_bar = (x [7])?(~ (x [7], x [7:0]) 1'b1): (1'b0, x [7:0]);
dodeliti add_zx = (1'b0, z [7:0]) (1'b0, x [7:0]);
dodelite res = (add_zx [8])?x_bar: (x [7], x [7:0]);

 
Hvala za vaš odgovor yx.yang

Naredil sem pravopisne napake na drugo funkcijo, i mišljeno po enem:

Code:f (x, z) =-x, z <-x

x; z> x

z; drugače

 
Funkcija odločitve niso medsebojno izključujejo, na primer, kaj se namenjene za rezultat x =- 1, z = 0?Lahko bi bilo 1 ali -1.

 
Prav imate, je x večji ali enak nič.

F (x, z) se uporablja za rezek z vrednostjo v območju-x, x (x> = 0).

Code:f (x, z) =-x, z <-x

x; z> x

z; drugače

z x> = 0

 

Welcome to EDABoard.com

Sponsor

Back
Top