
2つ数値の差を絶対値で求める適切な計算法を探しています.
2つの候補の内,回路の大きさが小さくなりそうな方はどちらですか?
また,絶対値を求める他の方法があったら教えてください。
<候補1>
X(絶対値)a1,a2(データ)
if(a1 < a2) X <= a2 - a1;
elsif (a2 > a1 ) X <= a1 -a2;
else X <= 0
<候補2>
df(N+1) 絶対値 X をビットで表現したときの最上位ビット
X <= a1-a2
X <= ( df(N+1) xor df(N) ) &
( df(N+1) xor df(N-1) ) &
( df(N+1) xor df(N-2) ) &
・・・・・・・
( df(N+1) xor df(2) ) &
( df(N+1) xor df(1) ) &
( df(N+1) xor df(0) ) + ("000000000" & df(N+1));
No.3ベストアンサー
- 回答日時:
考え方は<候補1>、回答のような1ビット演算回路をならべると、回路図が見やすそうで、規模も小さくなりそうだな、と思ったので。
<候補1>だと Nビット比較器とNビットセレクタとNビット減算器が必要な感じに見えたので、それだと無駄な配線が多くなりそうな感じがしたもので。
最近の論理合成プログラムはよくできてるそうで、プログラムのような感覚で設計できるとか。そんな環境なら、私の書いた方法はあまりやくにたたないかもしれません。
No.2
- 回答日時:
ハードはそんなに詳しくはないのですが
絶対値の演算を論理回路を組み合わせてやりたい、ということでよろしいですか?
&,(N)は
a1: a1(N) & a1(N-1) & ...& a1(1) & a1(0)
a2: a2(N) & a2(N-1) & ...& a2(1) & a2(0)
のような構成の意味でしょうか。
入力a1(i),a2(i),cmp(i+1),sel(i+1),Carry(i-1)
出力cmp(i),sel(i),df(i),Carry(i)
cmp(i+1) =False なら
cmp(i)<= (a1(i) ≠ a2(i))
sel(i)<= (a1(i) > a2(i))
cmp(i+1) =Trueなら
cmp(i)<=cmp(i+1)
sel(i)<=sel(i+1)
出力は
sel(i) =True なら df(i),Carry(i)<=a1(i) - a2(i) -Carry(i-1)
sel(i) =False なら df(i),Carry(i)<=a2(i) - a1(i) -Carry(i-1)
のような回路をビット数並べるといい気がします。
この回答への補足
<絶対値の演算を論理回路を組み合わせてやりたい、ということでよろしいですか?
絶対値演算を論理式で記述するか,セレクタ(if文)を用いた記述するか どちらがシステム的に優れているかということです。
↓2の補数を求めています。
最上位ビットが1なら符号を反転,最後に1を足す.
X <= ( df(N+1) xor df(N) ) &
( df(N+1) xor df(N-1) ) &
( df(N+1) xor df(N-2) ) &
・・・・・・・
( df(N+1) xor df(2) ) &
( df(N+1) xor df(1) ) &
( df(N+1) xor df(0) ) + ("000000000" & df(N+1));
お答えありがとうございます
この部分で if文を論理演算を表し,{ if(a1 < a2), else }
cmp(i+1) =False なら
cmp(i)<= (a1(i) ≠ a2(i))
sel(i)<= (a1(i) > a2(i))
cmp(i+1) =Trueなら
cmp(i)<=cmp(i+1)
sel(i)<=sel(i+1)
この部分で,if文の中身の計算ですね。
sel(i) =True なら df(i),Carry(i)<=a1(i) - a2(i) -Carry(i-1)
sel(i) =False なら df(i),Carry(i)<=a2(i) - a1(i) -Carry(i-1)
この方法は<候補1>と同じような気がします、、
No.1
- 回答日時:
「回路の大きさが小さくなりそうな方」
回路が何を指しているのか判りませんが、1点だけ。
候補1の最後のelseは要りますか?
if(a1 < a2) X <= a2 - a1;
elsif (a1 > a2) X <= a1 -a2; ←ここの間違いは修正。
else X <= 0 ←ここ
a1 < a2 じゃ無かったら、
a1 > a2 又は a1 = a2
だけど、0を代入するなら、
a1 - a2
も、0になるんじゃないの?
回答ありがとうございます
ご指摘のとおり0の代入も必要なさそうですね
if(a1 < a2) X <= a2 - a1;
else X <= a1 -a2
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- バスケットボール バスケの質問です。基本は、2ー3ゾーンDFなのですが特定の一人に対してのみ、ずーとついてるDF戦略は 1 2022/10/18 16:03
- 数学 【全微分について】 z=f(x,y) の全微分は df=(∂f/∂x)dx+(∂f/∂y)dy と表 1 2023/02/25 05:49
- 数学 微分の表し方について質問です f(x,y)の点(a,b)におけるv↑方向の方向微分 (x(t),y( 3 2023/02/20 09:41
- 統計学 t値の計算方法 1 2022/11/29 18:37
- 戦争・テロ・デモ 中国のDF-26やDF-21Dといったミサイルがある中で、台湾有事の際に米海軍は? 4 2023/03/14 10:35
- サッカー・フットサル サッカー日本代表がセリエAやリーガエスパニョーラやプレミアリーグに参戦したら何位くらいですか? 2 2023/05/16 22:22
- 数学 中学2年生の数学の問題で、わからないものがあるので教えていただきたいです。 折り目を作ったことで出来 4 2023/01/29 16:07
- スピーカー・コンポ・ステレオ スピーカーのDFについて教えてください。 4 2023/07/15 00:12
- 数学 全微分について質問です。 z=f(x,y)のとき df=(∂f/∂x)dx+(∂f/∂y)dy ∂f 5 2023/02/24 05:46
- 工学 周波数fで表現したフーリエ変換の対称性に関する質問です。 1 2022/09/14 12:27
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
えエクセルで○は1とし△は0.5で...
-
EXCELで2つの数値のうち大きい...
-
PowerPointで表の1つの列だけ...
-
Excelで隣のセルと同じ内容に列...
-
エクセルで二つの数字の小さい...
-
エクセルでオートフィルタのボ...
-
エクセルで、2種類のデータを...
-
SUMIFとCOUNTIFを合わせたよう...
-
エクセルで時刻(8:00~20:00)...
-
エクセル(勝手に太字になる)
-
エクセルで特定の文字が入って...
-
「B列が日曜の場合」C列に/...
-
エクセルVBAで別BOOKに「名前の...
-
数値の列から偶数のみを抽出す...
-
Excelで半角の文字を含むセルを...
-
Excel 文字列を結合するときに...
-
エクセルで最初のスペースまで...
-
エクセルで極大値を拾うには
-
エクセル 同じ値を探して隣の...
-
Excel 条件による複数行への値...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
えエクセルで○は1とし△は0.5で...
-
UWSCのCALLで呼び出すファイル...
-
以下の条件に合う関数を教えて...
-
EXCELで
-
機械設計・製図を極めた方、教...
-
VBAで組み合わせ算出やCOUNTIFS...
-
変数を引き継ぐには...
-
数IIBの数列の問題、、、
-
誰か解いてください!
-
URLの?以降の名称(~~/index...
-
エクセルのFINDで複数のワード...
-
ゴルフのティーチングプロにな...
-
tracertの結果
-
Excel 英大文字小文字を区別せ...
-
急いでいます。論文での数式の...
-
数学Ⅲ
-
Excel2010で日付の前ゼロを空白...
-
エクセル 特定の文字のみカウント
-
線形代数の次元の問題です。 ぜ...
-
格納したデータを配列のように...
おすすめ情報