• ベストアンサー

Verilog でのソートの仕方

いつもお世話になっております。 どなたかおわかりになる方教えて下さい。 verilogで9個(3×3)の8bit/個データを昇順か降順で並び替えて真ん中の5番目を抽出したいと考えています。 やっかいなのは、一度使用したの3×3の値の内6個は次回のソートで使用して、また5番目を抽出したいと考えていることです。 ※下記がイメージ図です。 ●●●  ○●●  ◎○● ●●●→○●●→◎○●→ ・・・ ●●●  ○●●  ◎○● ●:旧データ ○:新データ ◎:次の新データ このようなフィルターになるのですがどの様にしたらよいか教えて下さい。 9個の1回ソートなら出来るんですが、6個を再利用し、かつこの処理がSTOPをかけるまで延々と続くとなると出来ませんでした。 おわかりになる方、よろしくお願い致します。 以上

質問者が選んだベストアンサー

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

Verilogはまったくわかりませんので、考え方のみですが・・・ >9個の1回ソートなら出来るんですが、6個を再利用し~ ソートをした後、再利用の6個をもとに戻せないという意味でしょうか? それなら、単純にソート前に、次回使用する6個の値を一時的に保存しておき、ソートで値を抽出後に、元に戻せば(シフトして戻すのかも)よいだけでは? あるいは9個程度のデータなら、ソートせずに、最大値(または最小値)を探して、5番目のデータを選んでもそれほど時間は変わらないかも・・・ (これだと、ソートしないので並べ替えをしないで済みます。若干効率が悪いかも。) ご質問の意味を外していましたら、すいません。

river7
質問者

お礼

ご回答ありがとうございます。 確かに「次回使用する6個の値を一時的に保存しておき、ソートで値を抽出後に、元に戻す」がいけそうな感じがしてきました。きっちり保存しておけばいけそうな感じがします。 ありがとうございました。

その他の回答 (1)

  • JYUZA
  • ベストアンサー率29% (54/184)
回答No.2

最初の9個のレジスタの埋め方が問題ですが新データを取り込む際に同タイミングでreg11 = reg21てな感じでシフトしてははだめですか?最初に9個埋めるのに3回かかってしまいますが・・・新データを3個しか取り込まないなら行けますよね?

river7
質問者

お礼

ご回答ありがとうございます。 基本的にJYUZAさんの説明された通りシフトの感じです。 verilog記述でソートをするならどの様に記述するのか? データを再利用する場合は?と悩んでいました。 ソートは地道に順序よく2値比較でやり、6個の再利用はキチンと保管(保存)しておき取り出して再利用かなと考えています。 年明け早々に、本回路設計で事前調査していました。 ありがとうございました。

関連するQ&A