예제 #1
0
파일: gatesim.cpp 프로젝트: jucs/gatesim
static void memory_test() {
	size_t address_size = 10;
	Memory *memory = new Memory(address_size);
	
	memory->input_set(MEMORY_INPUT_CLK, 0);
	
	memory->input_set(MEMORY_INPUT_MWE, 1);
	
	memory->address_set(2 + address_size, 0); //Output address

	for(size_t i = 2; i < 100; ++i) {
		memory->address_set(2, i); //Input address
		memory->data_set(i + 42);
		
		memory->input_set(MEMORY_INPUT_CLK, 1);
		memory->input_set(MEMORY_INPUT_CLK, 0);
	}

	memory->input_set(MEMORY_INPUT_CLK, 1);
	memory->input_set(MEMORY_INPUT_CLK, 0);
	
	memory->input_set(MEMORY_INPUT_MWE, 1);
	memory->address_set(2, 1); //Input address
	memory->address_set(2 + address_size, 0); //Output address
	memory->data_set(83);
	
	memory->input_set(MEMORY_INPUT_CLK, 1);
	memory->input_set(MEMORY_INPUT_CLK, 0);
	
	memory->input_set(MEMORY_INPUT_MWE, 1);
	memory->address_set(2, 3); //Input address
	memory->data_set(199);
	
	memory->address_set(2 + address_size, 0); //Output address
	printf("Memory: %lu\n", memory->data_get());
	
	memory->input_set(MEMORY_INPUT_CLK, 1);
	memory->input_set(MEMORY_INPUT_CLK, 0);
	
	memory->input_set(MEMORY_INPUT_MWE, 0);
	memory->address_set(2, 3); //Input address
	memory->data_set(32);
	
	memory->input_set(MEMORY_INPUT_CLK, 1);
	memory->input_set(MEMORY_INPUT_CLK, 0);
	memory->input_set(MEMORY_INPUT_CLK, 1);
	memory->input_set(MEMORY_INPUT_CLK, 0);
	
	memory->address_set(2 + address_size, 1); //Output address
	printf("Memory: %lu\n", memory->data_get());
	
	memory->input_set(MEMORY_INPUT_CLK, 1);
	memory->input_set(MEMORY_INPUT_CLK, 0);
	
	memory->address_set(2 + address_size, 3); //Output address
	printf("Memory: %lu\n", memory->data_get());
	
	for(size_t i = 0; i < 102; ++i) {
		memory->address_set(2 + address_size, i); //Output address
		printf("Memory: %lu\n", memory->data_get());
		
		memory->input_set(MEMORY_INPUT_CLK, 1);
		memory->input_set(MEMORY_INPUT_CLK, 0);
	}
	
	delete memory;
}