EzDoum

찾기
처음으로 | 찾기 | 아카이브 | 글 올리기 | 링크 | 자료실 | 통계 | 연락처 | 자유게시판
이지도움 특집
전체보기
네트워크
TI OMAP35x
TI DaVinci
Analog Blackfin
RobotWar2005
임베디드!
캐쉬의 모든것
메모리 할당 알고리즘
CPU 파이프라이닝
자료구조(Tree)
금융

Login
이름

암호

기억하기


사용자 등록

현재 접속중인 등록 사용자는 0명, 익명 사용자는 1명 입니다.
전체 등록 사용자: 751명

마지막 답장
·libcurl + fuse 조합으로 되는게 많네. (1)
·Linux Ftrace에 관해 (3)
·Android MTP ( Media Transfer Protocol ) (1)
·Lighttpd에 인증을 digest 사용시 IE 오동작 문제? (1)
·Dtrace에 관해 (1)

최근글
·OpenSSL and multi-threads (0)
·ARM 환경에서 OpenCL 사용 (0)
·IoT용 WIFI 모듈 비교 ( MCU ) 클래스 (0)
·Glances - 리눅스 여러 가지 항목을 한 화면에서 모니터링 (0)
·plugin 방식의 로그 분석기 (0)

뜨거운 감자
·나는 인터렉티브한 환경에서 역어셈블 한다. (12)
·GNU REGEX (정규표현식) 프로그래밍 강좌 (7)
·SoCRobotWar 2005 - 신입생 기초 교육자료 (7)
·ASP.NET의 데이터 그리드와 사용자 컨트롤 (7)
·DHTML Editing Control (7)

가장 많이 읽은 글
·[Cache] 2-way Set-Associative 방식이란 무엇일까? (2)
·멀티쓰레드(Pthread) 프로그래밍
·Sorting Algorithm Animation (2)
·GNU REGEX (정규표현식) 프로그래밍 강좌 (7)
·SoCRobotWar 2005 - 신입생 기초 교육자료 (7)

임베디드! - 어드레스 래치
글쓴이: EzDoum 글쓴날: 2004년 09월 02일 오전 02:51
하드웨어



fpga에서 addr와 data를 받는데 addr를 전부 다 받을려면 20개 이상의 핀이 필요하다. fpga에서 20개 핀을 어드레스용으로만 사용한다면 낭비가 크기 때문에 일부 어드레스 라인만 받고 이걸 래치에 걸고 데이터 핀 8개로 조합을 해서 어드레스와 데이터를 각각 만들게 된다.

내가 작업한 보드에서는 addr[19:0] 중에 addr[5:1]만이 fpga로 연결 되어 있고 데이터는 [7:0] 이렇게 8비트 연결이 되어 있어서 2k bytes에 해당하는 폰트나 1k bytes 스크린 버퍼를 주소지정하기 위해서는 high,low 이렇게 두번의 주소 지정이 필요하고 마지막에 데이터를 넣어서 3번의 메모리 억세스가 필요하다.

중간에 OSD_SCR_CLEAR로 더미 값을 쓰는 이유는 같은 뱅크로 값을 써나가니 AMS2_n신호가 움직이질 않아서(blackfin 특성인듯) 일부러 다른 뱅트로 다녀온 것임.

[code]

//- dsp ------------------------------------------------------------------------

#define OSD_SCR_ADDRHIGH	(*(volatile unsigned char *)(0x20200008))
#define OSD_SCR_ADDRLOW		(*(volatile unsigned char *)(0x20200010))
#define OSD_SCR_DATA		(*(volatile unsigned char *)(0x20200020))
#define OSD_SCR_CLEAR		(*(volatile unsigned char *)(0x201FFFFF))

int DoFreeze(CMD_TBL *cptr, int argc, char **argv) {
	long addr; 
	volatile unsigned char buff;
	int i;
	
	if (argc < 3){
		printf(cptr->usage);
		return 0;
	}
	if (!HexToInt((char *)argv[1],(void *)&addr, VAR_LONG)){
		printf("Illugal character is used.\n\r");
		return 0;
	}
	if (!HexToInt((char *)argv[2],(void *)&buff, VAR_CHAR)){
		printf("Illugal character is used.\n\r");
		return 0;
	}

	OSD_SCR_ADDRHIGH	= (addr>>8);
		OSD_SCR_CLEAR		= 0xff;
	OSD_SCR_ADDRLOW		= (0xff & addr);
		OSD_SCR_CLEAR		= 0xff;
	OSD_SCR_DATA		= buff;
		OSD_SCR_CLEAR		= 0xff;
		
	printf("%d %d %d\n\r", (addr>>8), (0xff & addr), buff);

	return 1;
} 



//- verilog --------------------------------------------------------------------
/*
	AMS2_N	-> CS
	AOE_N	-> READ
	AWE_N	-> WRITE
	
	ADDR[5:1]		
	A[2:1] --> target 
				00: screen buffer
				01: screen attr
				10: font
				11: bar/etc
				
	A[5:3] --> action
				001: Address High
				010: Address Low
				100: Data		
*/

reg	 [7:0] scr_rdat;
reg	 [7:0] scr_wdat;
reg  [15:0] scr_raddr;
reg  [15:0] scr_waddr;	
reg  scr_ren;
wire scr_wen;
					
assign scr_wen = ( ~AMS2_N & ADDR[5:1] == 5'b100_00);

bf_dpr osd_screen (
	.data(scr_wdat),
	.wren(1'b1),
	.wraddress(scr_waddr[9:0]),
	.rdaddress(scr_raddr[9:0]),
	//.rden(scr_ren),
	.wrclock(AWE_N),
	.wrclocken(scr_wen),
	.rdclock(c0),
	.rdclocken(scr_ren),
	.q( scr_rdat )
);

reg	 [7:0] font_rdat;
reg	 [7:0] font_wdat;
reg  [15:0] font_raddr;
reg  [15:0] font_waddr;	
reg	 font_wen, font_ren;

always @(negedge AWE_N) 
begin
	if( ~AMS2_N && (ADDR[2:1] == 2'b00) )	// chip enable
	begin
		case ( {ADDR[5:3]} )
			3'b001: // ADDRESS HIGH				
				begin
					scr_waddr[9:8] <= DATA[1:0];
				end
			3'b010: // ADDRESS LOW
				begin
					scr_waddr[7:0] <= DATA[7:0];
				end
			3'b100: // ADDRESS DATA
				begin
					scr_wdat[7:0] <= DATA[7:0];
				end
		endcase
	end			
end


[/code]

첨부화일은 blackfin async memory write timing

  • 첨부 파일: SNAG-0101.jpg SNAG-0101.jpg (49 KiB(49,823 Bytes))

    [Image Size 776 x 519]
    SNAG-0101.jpg



    [분류: 하드웨어 인쇄용 페이지 본문 email로 보내기 ]

  • <  임베디드! - 엘지필립스 lcd 패널 signal timing waveforms | 임베디드! - OSD 완성!! 다음 과제는 Sdram Frame Buffer  >

    답장 쓰기
    글을 올리시려면 로그인 (사용자 등록) 하셔야 합니다.

    검색
    Google

    분류
    ·공지 (6)
    ·인터넷 (87)
    ·하드웨어 (260)
    ·C/C++ (65)
    ·어셈블리 (7)
    ·리눅스 (136)
    ·리눅스 커널 (67)
    ·윈도우즈 (25)
    ·데이터베이스 (20)
    ·보안 (16)
    ·.NET (25)
    ·그래픽 (13)
    ·책소개 (42)
    ·호기심 천국 (80)
    ·잡담 (111)
    ·사랑 (3)

    전체 본문수: 963
    전체 답장수: 525


    분류 : 하드웨어
    최근글
    최근글
    가장 많이 읽은 글
    ·[Cache] 2-way Set-Associative 방식이란 무엇일까? (2)
    뜨거운 감자
    ·SoCRobotWar 2005 - 신입생 기초 교육자료 (7)

    EzDoum투표
    이지도움 어때요?
    이게 뭐야. 다시 안올란다. --;
    아이 좋아라~ +_+;
    관심없다.
    먼가는 있는거 같은데 뭐하는 곳이지?
    기타 (자유게시판에 글로 남겨 주세요)
    [ 결과 | 투표 ]

    랜덤 링크
    http://kldp.net


     Home ^ BACK TO TOP ^ EzDoum - 도움이 필요하세요~??
     Powered by KorWeblog 1.5.8 Copyleft © 2001 EzDoum, 관리자: EzDoum