EzDoum

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

Login
이름

암호

기억하기


사용자 등록

현재 접속중인 등록 사용자는 0명, 익명 사용자는 4명 입니다.
전체 등록 사용자: 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)

임베디드! - 7-segment를 다루는 verilog code
글쓴이: EzDoum 글쓴날: 2004년 09월 11일 오후 06:05
하드웨어



내가 사용한 7-segments mDUR-6036k 이란 부품이다. 이것은 7-seg가 6개가 한번에
달려 있고 7비트 데이터와 6비트 셀렉트가 있다. 즉 한번에 한 세그먼트만 지정이 
가능하다. 그러면 6개의 세그먼트에 어떻게 표시를 하느냐... 사람눈을 속이는 것이다.
1~6번의 세그먼트를 1초에 반복적으로 켜주면 사람눈은 마치 led가 계속 들어오는
것 처럼 보이는 것이다. 그래서 아래의 verilog 코드를 보면 적당한 정도의 클럭을
만든 다음 cnt를 생성하고 이 카운트에 따라 led를 조작한다.

//------------------------------------------------------------------------------

	// PLD_CLK ( 1.0 KHz ---> 0.5KHz)
	//reg [1:0]	PLD_CLK_cnt;
	wire 		PLD_CLK_DIV2;		
/*	always @(posedge PLD_CLK ) 
	begin
		PLD_CLK_cnt = PLD_CLK_cnt + 1'b1;
	end		*/

	assign PLD_CLK_DIV2 = cnt[11];

	reg	[2:0] segSel;	
	reg [3:0] SEG_DATA[0:6];	// 7-segment data buffer
	reg [3:0] SEG_CURRT;
	
	ledDisplay my_led (
		.codeIn(SEG_CURRT),
		.codeOut({ LED_G,LED_F,LED_E,LED_D,LED_C,LED_B,LED_A }),
		.clkIn(PLD_CLK_DIV2)
	);		
	// 7-segments refesher		
	always @(posedge PLD_CLK_DIV2 or negedge RESET_N) 
	begin
	
		if(~RESET_N) begin
			segSel   <= 1'b0;
			SEG[6:1] <= 6'b000_000;			
		end else
			segSel <= segSel + 1'b1;
		
		case (segSel[2:0])			
			1 :	begin SEG_CURRT <= SEG_DATA[1]; SEG[6:1] <= 6'b000_001; end
			2 :	begin SEG_CURRT <= SEG_DATA[2]; SEG[6:1] <= 6'b000_010; end
			3 :	begin SEG_CURRT <= SEG_DATA[3]; SEG[6:1] <= 6'b000_100; end
			4 :	begin SEG_CURRT <= SEG_DATA[4]; SEG[6:1] <= 6'b001_000; end
			5 :	begin SEG_CURRT <= SEG_DATA[5]; SEG[6:1] <= 6'b010_000; end
			6 :	begin SEG_CURRT <= SEG_DATA[6]; SEG[6:1] <= 6'b100_000; end
			default : begin SEG[6:1] <= 6'b000_000; end
		endcase
	end				

//------------------------------------------------------------------------------

// 7-segments decoder
module ledDisplay(
	codeIn,codeOut,
	clkIn
);

	input  [3:0] codeIn;
	output [6:0] codeOut;
	input	clkIn;

	reg [3:0] codeIn;
	reg [6:0] codeOut;	
	
	always @(posedge clkIn) 
	begin
		case (codeIn)
			 0: codeOut <= 7'b0111111;
			 1: codeOut <= 7'b0000110;
			 2: codeOut <= 7'b1011011;
			 3: codeOut <= 7'b1001111;
			 4: codeOut <= 7'b1100110;
			 5: codeOut <= 7'b1101101;
			 6: codeOut <= 7'b1111101;
			 7: codeOut <= 7'b0000111;
			 8: codeOut <= 7'b1111111;
			 9: codeOut <= 7'b1101111;
			10: codeOut <= 7'b1110111;
			11: codeOut <= 7'b1111100;
			12: codeOut <= 7'b0111001;
			13: codeOut <= 7'b1011110;
			14: codeOut <= 7'b1111001;
			15: codeOut <= 7'b1110001;
		endcase
	end
endmodule


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

<  임베디드! - ABC of SDRAMemory | 임베디드! - 엘지필립스 lcd 패널 signal timing waveforms  >

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

검색
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