Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

搜索
1 2 3 4
查看: 24978|回復: 11
打印 上一主題 下一主題

[問題求助] 請問~Verilog 設計資料排序~

  [複製鏈接]
1#
發表於 2010-4-11 15:41:07 | 顯示全部樓層
對於3x3的median filter你可以考慮22排序(這是我之前自己用的方法), 只要多排幾次就有答案
4 U2 Z) s& [+ |! r" j* i9 I5 ]至於real time本來就不是問題, 除非你要在FPGA跑超過300MHz以上的clock rate (就算要跑更高速也是可以的, 只要從演算法著手修改就行了), 用ASIC的話速度就不是重點了.
+ n/ n, M" ?( v; F3 z9 M+ E+ U  p6 b, ?5 I9 {4 z* x* L0 E. s
舉個4進4出的例子:
: N8 [' d+ E7 ?  k3 q8 x% Iinput [word length] a[4];
6 X& a1 w7 {6 I% G4 g* n" ^reg [word length] b[4], c[4];/ ~: V2 u! p  i5 t! k( k
第一次排序
/ ~8 j2 Y; ~% o9 i( [b[0]=min(a[0], a[1]);% p* L1 u" N) {7 P" g, h, h5 `9 i6 z
b[1]=max(a[0], a[1]);
, V5 t' {! I( S* h/ @b[2]=min(a[2], a[3]);" k. A5 D2 q" O! ]" n
b[3]=max(a[2], a[3]);
+ h% P/ k  K& C2 a" w第二次排序+ N7 Y: @) F( ~: d& \, r
c[0]=min(b[0], b[2]); //real minmum/ @, k7 W( \9 G% G
c[1]=max(b[0], b[2]);
! Q8 A9 D* O8 lc[2]=min(b[1], b[3]);
6 O5 J$ v7 x. K1 A8 R3 B; Zc[3]=max(b[1], b[3]);//real maximum) o0 Q6 ^) H8 X0 I
第三次修正項
$ U: n8 ^: x. C1 x7 R: bd[0]=c[0]; //real minmum
7 r! P+ |7 M* \8 ^% E1 A7 u3 Id[1]=min(c[1], c[2]);0 s# C! i. @7 ^3 N; `
d[2]=max(c[1], c[2]);
* s$ U  E9 P" K* w, od[3]=c[3];//real maximum
0 G5 V  `- [' Z& b+ j//d[0]~d[3]就是依序小到大的答案9 D) O2 H) @# _) x  e7 L+ U7 N* P
& z! e# e. n; S- P5 ?
這個方法對你只有拋磚引玉的效果 (照做當然也會成功), 對於median filter, 建議你修改一下這個方法, 並且省略很多不需要的運算 (因為你只需要留下中間值, 其他的值並不需要)
- S3 ^& U  H; N/ w& C6 x  z
; @" A5 m. ^) ~$ a實做的考量
# u8 W/ I4 t$ w/ P- a( Q1. 實做上min()跟max()應該是一起做的
& q- r, z- h5 Z) N8 k& ^ if(a>b)! ^/ `7 [, T0 ?& O
     min = b;
/ k+ U" H) h$ d* V" Z     max = a;
7 K, Y6 I1 Z1 m4 [! e9 G  else% d; B) x0 Z) b- o
    min = a;
/ a8 j' q4 A1 q    max = b;: k' K& i; t8 \# c0 B3 H: P/ p
2. 另外實做時, 考慮硬體的複雜度及執行的速度, 適度的修改一定有其必要性.
7 F: B4 H' \! W. Y* D3. 如果要做adaptive median filter的話, 除了中間值以外要多留下幾個項.6 t5 ^' i9 d1 Q/ X
P.S. 用我的方法寫conference paper記得要掛我名字哦...XD
2#
發表於 2010-4-12 22:31:10 | 顯示全部樓層
啪啪啪7 f1 O6 Z3 p- S$ g
其實你的想法已經跟我的想法是一樣的了, 我想已經你知道我一開始講的那個方法的最大問題了
5 o# q- @$ O- b  i最大問題在於, 第二次的結果只保証最大值及最小值是對的, 對於修正項, 需要更多的運算
" d2 E1 R. q3 P# I$ {  w7 d. K4 p/ R當亂度能包含所有的項時, 答案一定是對的7 A9 w# y* b! P$ j; \: P
所以關鍵就在於如何用最少的運算次數達到最大的亂度.9 E$ K* A& J8 g/ v) D
左上到右下不用再算的理由是, 左上一定是最小值, 右下一定是最大值, 所以根本不用算
2 R1 j' l" I+ i% z) g) \' C! _所以在最大的亂度中, 8-1=7次應是最多的運算了, 3 c3 l# L6 z! `' k! p( H

8 C+ p4 O$ i/ _) `( {有人有更佳解嗎?
3#
發表於 2010-4-19 20:39:23 | 顯示全部樓層
沒聲大大, 其實大家都很棒啊.
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

首頁|手機版|Chip123 科技應用創新平台 |新契機國際商機整合股份有限公司

GMT+8, 2024-6-8 04:15 AM , Processed in 0.136517 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表