Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

  [複製鏈接]
1#
發表於 2010-4-11 15:41:07 | 顯示全部樓層
對於3x3的median filter你可以考慮22排序(這是我之前自己用的方法), 只要多排幾次就有答案
" `0 F' C' O7 k$ c, [1 M$ e) w$ y至於real time本來就不是問題, 除非你要在FPGA跑超過300MHz以上的clock rate (就算要跑更高速也是可以的, 只要從演算法著手修改就行了), 用ASIC的話速度就不是重點了.2 z0 ]( b6 e3 Q% c2 e1 a7 O

1 [2 |; G. |7 W: L舉個4進4出的例子:! Q& k1 l  h2 W  k5 T
input [word length] a[4];( O9 c/ X; K+ [# `" X, k( L
reg [word length] b[4], c[4];9 {7 F8 X+ u, y
第一次排序
( V, z# T/ }4 ]2 p) ab[0]=min(a[0], a[1]);
4 c7 ~8 T& f* u) A7 n8 H0 o+ g, l- ib[1]=max(a[0], a[1]);
* v8 `* t: U% y& E( |b[2]=min(a[2], a[3]);
( ?( ?& @' V+ G) E. g# Q/ I: Cb[3]=max(a[2], a[3]);
3 L9 z' D) ~1 L& u第二次排序
# J/ y- p) h" S: ^  n: p/ X, ic[0]=min(b[0], b[2]); //real minmum  {, a5 g* D; D( c
c[1]=max(b[0], b[2]);2 E" N. ]" F$ o. x& C) X" D
c[2]=min(b[1], b[3]);4 N7 y: W5 N/ u& I* r- d6 y
c[3]=max(b[1], b[3]);//real maximum
. C- T* a$ ^: `, r- o第三次修正項
$ @; C# w3 P: ~8 v! [7 t( s0 Ud[0]=c[0]; //real minmum' g" G# F, D7 P1 f" V1 b
d[1]=min(c[1], c[2]);
: J4 L1 k( k! X4 C% _d[2]=max(c[1], c[2]);8 e9 k% d/ i, S' _/ S7 R
d[3]=c[3];//real maximum7 [" y: x/ A; s
//d[0]~d[3]就是依序小到大的答案
5 m$ Q/ y7 p. B- n( Q6 `
' C: n9 Z. o' n- `8 |這個方法對你只有拋磚引玉的效果 (照做當然也會成功), 對於median filter, 建議你修改一下這個方法, 並且省略很多不需要的運算 (因為你只需要留下中間值, 其他的值並不需要)1 `3 i+ s6 S/ V5 n; M( X, g+ f
& }4 n# F. y. p# N
實做的考量; C# }2 G: p9 P/ g
1. 實做上min()跟max()應該是一起做的
0 F7 T/ M$ r. J7 M; z# d if(a>b): g* t1 `8 h' `, k
     min = b;
& S1 [; N! G6 i; m     max = a;/ N% P3 ?2 ]  \: |  V2 d
  else) E1 D5 f. Y$ \4 z4 X5 R9 e
    min = a;/ C: p- b9 X7 @
    max = b;* s( D( ~- Q3 n6 t
2. 另外實做時, 考慮硬體的複雜度及執行的速度, 適度的修改一定有其必要性.
9 U0 p& g& r* Y0 ], R0 b. p6 D3. 如果要做adaptive median filter的話, 除了中間值以外要多留下幾個項.5 }4 A9 G3 ]; s6 v# l, ^& |
P.S. 用我的方法寫conference paper記得要掛我名字哦...XD
2#
發表於 2010-4-12 22:31:10 | 顯示全部樓層
啪啪啪
7 A2 H1 {9 s- E. K% c其實你的想法已經跟我的想法是一樣的了, 我想已經你知道我一開始講的那個方法的最大問題了
; F6 L: h4 F$ Y9 `8 ]最大問題在於, 第二次的結果只保証最大值及最小值是對的, 對於修正項, 需要更多的運算) R3 }* V. o: B! p% v, V3 Z# v
當亂度能包含所有的項時, 答案一定是對的
; A8 ?' S1 B1 V) v4 i2 I* p/ z所以關鍵就在於如何用最少的運算次數達到最大的亂度.( W, G$ j6 ~; b/ Y( e; S0 a3 y
左上到右下不用再算的理由是, 左上一定是最小值, 右下一定是最大值, 所以根本不用算
3 p, m9 Z2 C8 b+ [& N0 P  O8 u, X所以在最大的亂度中, 8-1=7次應是最多的運算了,
" S; p% i: j6 |0 n; b+ \/ r( ^
* b9 s: t) A1 n$ z5 G  E有人有更佳解嗎?
3#
發表於 2010-4-19 20:39:23 | 顯示全部樓層
沒聲大大, 其實大家都很棒啊.
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-15 05:35 PM , Processed in 0.106514 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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