陳慶瀚 機器智慧與自動化技術(MIAT)實驗室 國立中央大學資工系 2013年5月28日 數位系統導論 A3─演算法高階硬體合成 High-Level Hardware Synthesis of Algorithm 陳慶瀚 機器智慧與自動化技術(MIAT)實驗室 國立中央大學資工系 2013年5月28日
演算法的階層式模組分解
模組架構
離散事件建模
階層式的離散事件建模
階層式的離散事件建模
迴圈Loop int i, Sum=0; for(i=0; i<=10; i++) { Sum = Sum + i; }
演算法的GRAFCET建模
系統架構
合成架構
Grafcet控制器模組合成 grafcet :PROCESS(CLK,RST) BEGIN IF RST='1' THEN X0<='1';X1<='0';X2<='0'; ELSIF CLK'EVENT AND CLK='1' THEN IF X0='1' THEN X0<='0'; X1<='1'; ELSIF X1='1' THEN X1<='0'; X2<='1'; ELSIF X2='1' AND I<10 THEN X2<='0';X1<='1'; ELSIF X2='1' AND I=10 THEN X2<='0';X0<='1'; END IF; END PROCESS grafcet;
Datapath模組合成 datapath :PROCESS(CLK,RST) BEGIN IF CLK'EVENT AND CLK='1' THEN IF X0='1' THEN TMP<=0; I<=0; ELSIF X1='1' THEN TMP<=TMP+I; ELSIF X2='1' THEN I<=I+1; END IF; END PROCESS datapath;
系統合成 ENTITY SUM is PORT ( CLK, RST : IN STD_LOGIC; S : OUT INTEGER RANGE 0 TO 128 ); END SUM; architecture arch of SUM is SIGNAL X0,X1,X2:STD_LOGIC; SIGNAL I: INTEGER RANGE 0 TO 15; SIGNAL TMP: INTEGER RANGE 0 TO 128; BEGIN grafet : process(CLK,RST)…… datapath : process(CLK,RST)…… S<=TMP; END arch;
模擬
演算法建模實例-求三角形函數內插值 求三角形函數內插值:輸入x,求y
演算法建模實例-求三角形函數內插值 求三角形函數內插值:輸入x,求y
演算法建模實例-找陣列值的最大值 求一個陣列值的最大值:從存放在記憶體中的陣列值data[j],j=0...N-1,找出其最大值。 max=0; for(j=0; j<=N; j++) { if(data[j]>max)max=data[j]; }
演算法建模實例-找陣列值的最大值
演算法建模實例-求Histogram陣列值的重心
演算法建模實例-求Histogram陣列值的重心
練習-Bubble Sort 請依方法論步驟設計一個電路執行以下Bubble sorting演算法:
練習-Bubble Sort Embedded ROM參考設計: type ROM_8x4 is array (0 to 8) of std_logic_vector(3 downto 0); constant data: ROM_8x4 := ( 0 => "0000", 1 => "0001", 2 => "0011", 3 => "0001", 4 => "0110", 5 => "0000", 6 => "0011", 7 => "0111" );