2010年1月9日 星期六

[C語言] 動態記憶體配置(malloc)

malloc , calloc , realloc , free
原始碼關於此工具
#include

int main(){

/*一維陣列*/
int size1=1000;
int *array1;

// 利用 malloc 配置空間 。
array1 = (int*) malloc(size1 * sizeof(int));

// 利用 calloc 配置空間,會初始為 0 。
array1 = (int*) calloc(size1 , sizeof(int));

// 利用 realloc 將原本的空間調整成兩倍,並且複製原本的內容,
// 但不保證是原本的空間位址。
array1 = (int*) realloc(array1, 2 * size1 * sizeof(int));


// 釋放記憶體空間。
free(array1);


/*二維陣列*/
int i;
int size_x=100;
int size_y=100;
int **array2;

// 利用 malloc 配置二維空間 。
array2 = (int**) malloc(size_x * sizeof(int*));
for (i=0; i array2[i] = (int*) malloc(size_y * sizeof(int));
}


// 釋放記憶體空間
for (i=0; i free(array2[i]);
}
free(array2);

return 0;
}

2009年11月2日 星期一

Fine-Grain Pipelining

雖然Fine-Grain的確可以提升clock speed但是實作上有困難,因為乘法器不是自己設計的,所以切割上要花的力氣比較多。

2009年11月1日 星期日

Pipelining and Parallel Processing

QuartusII

由於QuartusII (MAX+PlusII) 的simulator只能接受自己所編輯的waveform作為觸發輸入(test pattern),而不能接受一般HDL所撰寫的test-bench,所以筆者通常不用QuartusII的simulator來做模擬,而用ModelSim或Verilog-XL。此外,QuartusII的合成器對於一些HDL的語法也不支援,所以建議用Synopsys Design-Analyzer合成完所產生的gate_level.v或是.edf (netlist file),作為QuartusII的輸入,只由QuartusII執行 "FPGA佈局 -->Netlist download to CPLD / FPGA" 這部份的工作就好。
reference