KR100568117B1 - 가속화된 비트 스캐닝 프로그램을 수행하는 불휘발성메모리 장치 - Google Patents

가속화된 비트 스캐닝 프로그램을 수행하는 불휘발성메모리 장치 Download PDF

Info

Publication number
KR100568117B1
KR100568117B1 KR1020040073883A KR20040073883A KR100568117B1 KR 100568117 B1 KR100568117 B1 KR 100568117B1 KR 1020040073883 A KR1020040073883 A KR 1020040073883A KR 20040073883 A KR20040073883 A KR 20040073883A KR 100568117 B1 KR100568117 B1 KR 100568117B1
Authority
KR
South Korea
Prior art keywords
program
data
unit
value
signal
Prior art date
Application number
KR1020040073883A
Other languages
English (en)
Other versions
KR20060024995A (ko
Inventor
정재용
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020040073883A priority Critical patent/KR100568117B1/ko
Priority to US11/181,163 priority patent/US7379372B2/en
Priority to CNB2005100980195A priority patent/CN100555454C/zh
Priority to JP2005259667A priority patent/JP2006085896A/ja
Publication of KR20060024995A publication Critical patent/KR20060024995A/ko
Application granted granted Critical
Publication of KR100568117B1 publication Critical patent/KR100568117B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/24Bit-line control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/32Timing circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1078Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
    • G11C7/1087Data input latches
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/12Bit line control circuits, e.g. drivers, boosters, pull-up circuits, pull-down circuits, precharging circuits, equalising circuits, for bit lines
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/22Read-write [R-W] timing or clocking circuits; Read-write [R-W] control signal generators or management 
    • G11C7/222Clock generating, synchronizing or distributing circuits within memory device

Landscapes

  • Read Only Memory (AREA)

Abstract

여기에 개시된 불휘발성 메모리 장치는, 프로그램될 복수개의 데이터에 대해 순방향 및 역방향의 스캐닝을 병렬로 수행하여 "0"의 데이터를 찾아내고, 이를 소정의 개수 만큼씩 동시에 프로그램 한다. 상기 프로그램이 종료되고 나면, 나머지 데이터에 대해 순방향 및 역방향의 스캐닝을 병렬로 수행하고, 마지막 데이터까지 스캐닝이 진행되고 나면, 지금까지 찾아낸 "0"의 데이터를 동시에 프로그램 한다. 그 결과, 데이터를 프로그램 하는데 걸리는 평균 시간이 단축된다.

Description

가속화된 비트 스캐닝 프로그램을 수행하는 불휘발성 메모리 장치{NON-VOLATILE MEMORY DEVICE FOR ACCELERATED BITS SCANNING PROGRAM}
도 1은 본 발명의 바람직한 실시예에 따른 불휘발성 반도체 메모리 장치의 블록도;
도 2 및 도 3은 도 1에 도시된 반도체 메모리 장치에서 수행되는 병렬 비트 스캐닝 프로그램에 대한 동작 타이밍을 보여주는 타이밍도;
도 4는 도 1에 도시된 스캔클럭 발생부의 회로도;
도 5는 도1에 도시된 데이터 래치회로의 회로도;
도 6은 도1에 도시된 프로그램 비트 카운터의 회로도; 그리고
도 7은 도 1에 도시된 프로그램 제어부의 회로도이다.
*도면의 주요 부분에 대한 부호의 설명*
10 : 데이터 스캐닝부 20 : 스캔클럭 발생부
30 : 데이터 래치부 40 : 프로그램 비트 카운터
50 : 프로그램 제어부 60 : 프로그램 드라이버
70 : 감지부 80 : 프로그램부
90 : 메모리 셀 어레이 영역 100 : 불휘발성 반도체 메모리 장치
본 발명은 불휘발성 메모리 장치에 관한 것으로, 좀 더 구체적으로는 프로그램 시간을 단축할 수 있는 불휘발성 메모리 장치에 관한 것이다.
불휘발성 메모리 장치는 드라이브 전원이 공급되지 않아도 셀에 기록된 데이터가 소멸되지 않고 남아있다. 불휘발성 메모리들 중에서도 플래시 메모리는 전기적으로 셀의 데이터를 일괄적으로 소거하는 기능을 가지고 있기 때문에 컴퓨터 및 메모리 카드 등에 널리 사용되고 있다.
플래시 메모리는 셀과 비트 라인의 연결 상태에 따라 NOR형과 NAND형으로 구분된다. NOR형 플래시 메모리는 1개의 비트 라인에 2개 이상의 셀 트랜지스터가 병렬로 연결된 형태로서, 채널 핫 일렉트론(channel hot electron) 방식을 사용하여 데이터를 저장하고, F-N 터널링(Fowler-Nordheim tunneling) 방식을 사용하여 데이터를 소거한다. 그리고, NAND형 플래시 메모리는 1개의 비트 라인에 2개 이상의 셀 트랜지스터가 직렬로 연결된 형태로서, F-N 터널링 방식을 사용하여 데이터를 저장 및 소거한다. 일반적으로, NOR형 플래시 메모리는 전류 소모가 크기 때문에 고집적화에는 불리하지만, 고속화에 용이하게 대처할 수 있는 장점이 있고, NAND형 플래시 메모리는 NOR형 플래시 메모리에 비해 적은 셀 전류를 사용하기 때문에, 고집적화에 유리한 장점이 있다.
NOR 플래시 메모리의 셀 어레이(cell array)는, 크게 복수 개의 뱅크(bank)로 구성되고, 각각의 뱅크는 복수 개의 섹터(sector)로 구성되며, 각각의 섹터는 복수개의 메모리 셀(memory cell)로 구성된다. 일반적으로, NOR 플래시 메모리의 소거(erase) 동작은 상기 섹터 단위로 수행되고, 프로그램(program)은 워드(word) 단위(또는, 바이트(byte) 단위)로 수행된다.
NOR 플래시 메모리의 셀 어레이에 데이터를 프로그램하기 위해서는, 먼저 플래시 메모리에 프로그램 명령어(program command)가 입력된 후, 프로그램 어드레스와 프로그램 데이터가 플래시 메모리에 입력된다. 입력된 프로그램 어드레스와 프로그램 데이터는 칩 내부에 임시로 저장되고, 프로그램 어드레스에 대응되는 메모리 셀이 선택된다. 이어서, 프로그램 데이터에 대응되는 프로그램 전압이 비트 라인으로 인가되어, 실질적인 프로그램 동작이 수행된다. 그리고 나서, 내부적으로 미리 정해진 소정의 프로그램 수행 시간(program execution timing)이 경과하게 되면, 선택된 메모리 셀에 데이터가 프로그램되었는 지의 여부를 판별하는 베리파이(verify) 동작이 수행된다. 이 같은 프로그램 및 베리파이 동작은, 선택된 메모리 셀에 데이터가 정상적으로 프로그램될 때까지 반복 수행된다.
일반적으로, NOR 플래시 메모리를 프로그램하는데 사용되는 채널 핫 일렉트론 방식에서는, 메모리 셀의 드레인(drain)에 4~6V 정도의 고전압이 인가되기 때문에 일정 수준 이상의 프로그램 전류(current)를 필요로 한다. 그리고, 드레인에 인가되는 고전압은 칩 내부에 구비된 챠지 펌프(charge pump)를 통해 생성되기 때문에, 동시에 프로그램할 수 있는 메모리의 개수는 통상 2개 내지 4개로 제한된다. 예를 들어, 동시에 프로그램할 수 있는 비트의 수가 4개일 때 16 비트의 데이터는 4 비트씩 분할된 후, 총 4회에 걸쳐 메모리 셀에 프로그램된다.
플래시 메모리의 프로그램 특성을 살펴보면, 플래시 메모리에서 프로그램을 수행하기 위해서는 사전에 해당 어드레스 부분을 반드시 소거(erase)(즉, 데이터 값을 "1"로 만듦)하여야 하기 때문에, 프로그램 데이터가 "1"이라는 것은, 프로그램시 아무런 프로그램 동작을 수행하지 않아도 원하는 데이터를 프로그램한 것과 같다고 할 수 있다. 이와 같은 플래시 메모리의 프로그램 특성에도 불구하고, 대부분의 플래시 메모리는 프로그램될 데이터의 값이 "0"인지 "1"인지에 상관없이 각 데이터 그룹에 대해 일정한 프로그램 시간을 일률적으로 할당한다. 따라서, 프로그램 데이터 값에 상관없이 데이터를 프로그램하는데 걸리는 시간은 항상 일정하게 소요되는 문제가 있다.
따라서, 본 발명의 목적은 상술한 제반 문제점을 해결하기 위해 제안된 것으로, 프로그램 시간을 단축시킬 수 있는 불휘발성 메모리 장치를 제공하는데 있다.
상기의 과제를 이루기 위하여 본 발명에 의한 불휘발성 메모리 장치는, 복수 개의 메모리 셀들을 포함하는 메모리 셀 어레이; 일정 주기의 내부 클럭에 동기되어 복수 개의 스캔클럭신호들을 병렬로 발생하고, 상기 스캔클럭신호들에 응답하여 상기 제2 값을 갖는 데이터를 병렬로 검색하는 데이터 스캐닝부; 및 상기 제 2 값을 갖는 데이터의 개수가 상기 최대 동시 프로그램 비트수가 될 때마다 상기 검색된 데이터들을 동시에 프로그램하는 프로그램부를 포함하는 것을 특징으로 한다.
바람직한 실시예에 있어서, 상기 데이터 스캐닝부는, 상기 제2 값을 갖는 데 이터에 대한 순방향 검색과 역방향 검색을 병렬로 수행하는 것을 특징으로 한다.
바람직한 실시예에 있어서, 상기 데이터 스캐닝부는 상기 내부 클럭신호에 응답해서 상기 복수 개의 스캔클럭신호들을 병렬로 발생하는 스캔클럭 발생부; 및 상기 복수 개의 스캔클럭신호에 응답해서 상기 복수 개의 프로그램 데이터 중 상기 제2 값을 가지는 데이터를 검색하여 저장하는 데이터 래치부를 포함하는 것을 특징으로 한다.
바람직한 실시예에 있어서, 상기 스캔클럭 발생부는 상기 검색된 데이터의 개수가 상기 최대 동시 프로그램 비트수가 되면 소정의 프로그램 시간 동안 상기 스캔클럭신호들의 발생을 중지시키는 것을 특징으로 한다.
바람직한 실시예에 있어서, 상기 스캔클럭 발생부는 상기 내부 클럭의 각 주기 마다 적어도 둘 이상의 활성화된 스캔클럭신호들을 발생하는 것을 특징으로 한다.
바람직한 실시예에 있어서, 상기 스캔클럭신호들은, 상기 내부 클럭의 상승 에지 및 하강 에지 중 어느 하나에 동기되어 발생된 펄스 신호인 것을 특징으로 한다.
바람직한 실시예에 있어서, 상기 프로그램부는 상기 제 1 값을 갖는 메모리 셀들에 대해서는 프로그램을 수행하지 않는 것을 특징으로 한다.
(실시예)
이하 본 발명에 따른 실시예를 첨부된 도면을 참조하여 상세히 설명한다.
본 발명의 신규한 불휘발성 메모리 장치는 복수 개의 프로그램 데이터 중 데 이터 값이 "0"인 것을 병렬로 검색하여 소정의 비트 단위로 동시 프로그램을 수행한다. 그 결과, 프로그램 시간이 효과적으로 단축된다. 본 발명에서는 이와 같은 프로그램 방식을 "병렬 비트 스캐닝 프로그램 방식(Parallel Bit Scanning Program Scheme)이라 칭한다.
플래시 메모리와 같은 불휘발성 메모리에서 프로그램을 수행하기 위해서는 사전에 해당 어드레스 부분을 반드시 소거(데이터 "1"의 상태로 만듦)하도록 되어 있다. 불휘발성 메모리에서 수행되는 프로그램 동작은 데이터 "1"을 데이터 "0"으로 변환시키는 것을 의미한다. 따라서, 프로그램 데이터가 "1"이라는 것은 프로그램시 아무런 프로그램 동작을 수행하지 않더라도 원하는 데이터를 프로그램한 것과 같다고 할 수 있다. 그러므로, 본 발명에서는 프로그램 시간이 효과적으로 단축될 수 있도록 데이터 값이 "0"인 것을 병렬로 검색하여 프로그램을 수행한다.
도 1은 본 발명의 바람직한 실시예에 따른 불휘발성 반도체 메모리 장치(100)의 블록도이다. 도 1을 참조하면, 본 발명에 따른 불휘발성 반도체 메모리 장치(100)는 데이터 스캐닝부(data scanning unit ; 10), 프로그램부(program unit ; 80), 및 메모리 셀 어레이 영역(memory cell array region ; 90)으로 구성된다.
메모리 셀 어레이 영역(90)은, 메모리 셀 어레이(92), X-디코더(94), Y-디코더(96), 및 Y-게이트(98)를 포함한다. 메모리 셀 어레이(92)는 복수 개의 비트 라인(BL1, …, BLi)과 복수 개의 워드 라인(WL1, …, WLj)에 연결된 복수 개의 메모리 셀들로 구성된다. X-디코더(94)는 메모리 셀의 로우(row) 어드레스(X_Add)를 디코딩한다. Y-디코더(96)는 메모리 셀의 컬럼(column) 어드레스(Y_Add)를 디코딩한 다. 그리고, Y-게이트(98)는 메모리 셀 어레이(92)와 프로그램부(80) 간의 데이터 인터페이스를 수행한다. 도 1에 도시된 반도체 메모리 장치(100)는 NOR 타입의 플래시 메모리를 예로 든 것으로서, 본 발명에 따른 병렬 비트 스캐닝 프로그램 방식은 NOR 타입의 플래시 메모리가 아닌 타 불휘발성 메모리에도 적용 가능하다.
데이터 스캐닝부(10)는 스캔클럭 발생부(scan clock generating unit ; 20), 및 데이터 래치부(data latch unit ; 30)를 포함한다. 스캔클럭 발생부(20)는 내부 클럭신호(CLK)에 동기 되어 N 개의 스캔클럭신호(
Figure 112004041922275-pat00001
,
Figure 112004041922275-pat00002
)를 병렬로 발생한다. 본 발명에서는 N 비트의 프로그램 데이터를 N/2 비트씩 두 개의 그룹으로 분할하고, 상기 N 개의 스캔클럭신호(
Figure 112004041922275-pat00003
,
Figure 112004041922275-pat00004
)에 응답해서 MSB N/2 비트에 대한 순방향 스캔과, LSB N/2 비트에 대한 역방향 스캔을 동시에 수행한다. 이와 같은 순방향 및 역방향의 병렬 스캔 방식은 병렬 스캔의 일 예에 불과하며, 보다 많은 개수의 그룹으로 데이터를 분할하여 동시에 스캔할 수도 있고, 스캔 방향 또한 순방향 및 역방향 중에서 선택 가능하다.
스캔클럭 발생부(20)는 내부 클럭신호(CLK)의 각 주기 마다 적어도 둘 이상의 활성화된 스캔클럭 신호들을 병렬로 발생한다. 상기 병렬로 발생된 스캔클럭 신호들(
Figure 112004041922275-pat00005
,
Figure 112004041922275-pat00006
)은 "0"의 값을 갖는 프로그램 데이터를 순방향 또는 역방향으로 찾아내는데 사용된다. 그리고, 상기 내부 클럭신호(CLK)는 반도체 메모리 장치(100) 내부에 구비되어 있는 클럭 발생부(미 도시됨)로부터 발생된다.
데이터 래치부(30)는 서로 동일한 회로 구성을 가지는 N 개의 데이터 래치 회로(30a, …, 30j)로 구성된다. 각각의 데이터 래치 회로(30a, …, 30j)는 스캔클럭 발생부(20)로부터 병렬로 발생된 N 개의 스캔클럭신호(
Figure 112004041922275-pat00007
,
Figure 112004041922275-pat00008
)와 버퍼(29)로부터 전송된 N 개의 프로그램 데이터(Data<N:1>) 중, 대응되는 하나의 스캔클럭신호 및 하나의 프로그램 데이터를 각각 받아들여, 프로그램 데이터가 "1"의 값을 갖는지 또는 "0"의 값을 갖는지를 판별한다. 이 때, 내부 클럭신호(CLK)가 활성화 되는 각 구간마다 적어도 둘 이상의 스캔클럭신호들이 활성화 되므로, 데이터 래치부(30)는 프로그램 데이터가 "0"의 값을 갖는지에 대한 판별을 적어도 둘 이상 동시에 수행하게 된다.
각각의 데이터 래치 회로(30a, …, 30j)는 데이터 값에 대한 판별 결과에 따라 대응되는 프로그램 데이터를 유지시키고, 활성화된 프로그램 카운트 신호(PgmCount<i>)와 비트라인 선택신호(BLselect<i>)를 선택적으로 발생한다. 예를 들어, 대응되는 프로그램 데이터가 "0"의 값을 가질 경우, 해당 데이터 래치 회로(30a, …, 30j)는 활성화된 프로그램 카운트 신호(PgmCount<i>) 및 비트라인 선택신호(BLselect<i>)를 발생한다. N 개의 데이터 래치 회로(30a, …, 30j)로부터 발생된 N 개의 프로그램 카운트 신호(PgmCount<N:1>)는 프로그램 비트 카운터(40)로 입력된다. 그리고, N 개의 데이터 래치 회로(30a, …, 30j)로부터 발생된 N 개의 비트라인 선택신호(BLselect<N:1>)는, N 개의 프로그램 드라이브 회로(60a, …, 60j) 중 대응되는 해당 프로그램 드라이브 회로에게 각각 입력된다.
데이터 래치 회로(30a, …, 30j)는 초기 프로그램뿐만 아니라, 재 프로그램 시(즉, 베리파이 페일(Verify Fail)이 발생했을 때)에도 데이터를 스캐닝하여 "0"의 데이터를 검색해 낸다. 이를 위해 각각의 데이터 래치 회로(30a, …, 30j)는 대응되는 각각의 감지 회로(70a, …, 70j)로부터 베리파이 패스신호(VerifyPass<i>)를 받아들여, "0"의 데이터를 스캐닝할 것인지 여부를 판별한다. 예를 들어, 자신에게 입력된 베리파이 패스신호(VerifyPass<i>)가 베리파이 페일을 나타내는 경우, 해당 데이터 래치 회로(30a, …, 30j)는 "0"의 데이터를 찾아내는 병렬 비트 스캐닝을 수행한다.
프로그램부(80)는 프로그램 비트 카운터(program bit counter ; 40), 프로그램 제어부(program control unit ; 50), 프로그램 드라이버(program driver ; 60), 및 감지부(sensing unit ; 70)로 구성된다. 프로그램부(80)는 데이터 스캐닝부(10)에서 검색된 "0"의 데이터를 최대 동시 프로그램 비트수 만큼씩 그룹화하고, 검색된 "0"의 데이터의 개수가 최대 동시 프로그램 비트수가 될 때마다 해당 그룹에 속하는 복수 개의 데이터를 동시에 프로그램 한다.
이를 위해 프로그램 비트 카운터(40)는 각각의 데이터 래치 회로(30a, …, 30j)로부터 발생된 N 개의 프로그램 카운트 신호(PgmCount<N:1>)를 받아들이고, 활성화된 프로그램 카운트 신호(PgmCount<i>)의 개수를 카운트한다(즉, "0"의 값을 갖는 데이터의 개수를 카운트한다). 프로그램 비트 카운터(40)는 카운트된 값이 최대 동시 프로그램 개수가 되거나, 또는 마지막 스캔클럭신호(예를 들면, ScanCLK<5>)가 입력된 경우, 지금까지 찾아낸 "0"의 데이터를 동시에 프로그램하도록 제어하는 동시 프로그램 활성화 신호(BitMax)를 발생한다. 프로그램 비트 카운 터(40)로부터 발생된 동시 프로그램 활성화 신호(BitMax)는 스캔클럭 발생부(20) 및 프로그램 제어부(50)로 입력된다.
스캔클럭 발생부(20)는 프로그램 비트 카운터(40)로부터 발생된 동시 프로그램 활성화 신호(BitMax)에 응답해서, 프로그램이 수행되는 동안 스캔클럭의 발생을 정지시킨다. 그리고, 프로그램 제어부(50)는 프로그램 비트 카운터(40)로부터 발생된 동시 프로그램 활성화 신호(BitMax)와, 반도체 메모리 장치(100) 내부에 구비되어 있는 타이밍 제어부(미 도시됨)로부터 발생된 프로그램시간 제어신호(Time Out)에 응답해서, 프로그램 수행신호(PgmExecute)를 발생하고, 발생된 프로그램 수행신호(PgmExecute)를 프로그램 비트 카운터(40)와 프로그램 드라이버(60)로 출력한다.
프로그램 비트 카운터(40)는 최대 동시 프로그램 개수에 해당되는 "0"의 데이터가 프로그램되는 동안, 프로그램 제어부(50)로부터 발생된 프로그램 수행신호(PgmExecute)에 응답해서 프로그램 비트 카운터(40)의 카운팅된 값을 리셋시킨다. 그리고, 각각의 데이터 래치 회로(30a, …, 30j)를 리셋시키는 래치 리셋신호(LatchReset)를 발생한다.
프로그램 드라이버(60)는 서로 동일한 회로 구성을 가지는 N 개의 프로그램 드라이브 회로(60a, …, 60j)로 구성된다. 각각의 프로그램 드라이브 회로(60a, …, 60j)는 데이터 래치(30)에 구비된 N 개의 데이터 래치 회로(30a, …, 30j)와 일 대 일로 대응되어, 대응되는 데이터 래치 회로(30a, …, 30j)로부터 발생된 비트라인 선택신호(BLselect<i>)를 받아들인다. 그리고, 각각의 프로그램 드라이브 회로(60a, …, 60j)는 반도체 메모리 장치(100) 내부에 구비되어 있는 고전압 발생부( 미 도시됨)로부터 프로그램전압(Vbl)과, 프로그램 제어부(50)로부터 발생된 프로그램 수행신호(PgmExecute)를 받아들이고, 해당 비트라인 선택신호(BLselect<i>)가 활성화된 경우, 해당 비트 라인에게 프로그램 전압을 동시에 인가해 준다.
감지부(70)는 서로 동일한 회로 구성을 가지는 N 개의 감지 회로(70a, …, 70j)로 구성된다. 각각의 감지 회로(70a, …, 70j)는 프로그램이 수행되고 난 후 메모리 셀 어레이(92)의 해당 비트 라인으로부터 데이터를 읽어들여 프로그램이 완료되었는지를 확인하는 베리파이 동작을 수행한다. 각각의 감지 회로(70a, …, 70j)는, 베리파이 결과, 해당 메모리 셀이 프로그램된 것으로 확인되면, 활성화된 베리파이 패스신호(VerifyPass<i>)를 대응되는 데이터 래치 회로(30a, …, 30j)로 발생한다. 그리고, 베리파이 결과, 해당 메모리 셀이 프로그램되지 않은 것으로 확인되면, 베리파이 페일을 의미하는 로우 레벨의 베리파이 패스신호(VerifyPass<i>)를 대응되는 데이터 래치 회로(30a, …, 30j)로 발생한다.
여기서, 상기 각각의 감지 회로의 출력단에는 프로그램이 수행되고 난 후 메모리 셀 어레이(92)의 해당 비트 라인으로부터 읽어들인 데이터와, 각각의 프로그램 드라이브 회로(60a, …, 60j)에 의해 프로그램된 데이터가 서로 일치하는지를 비교하는 비교기(또는 비교 로직)를 더 포함할 수 있다. 이 경우, 각각의 감지 회로(70a, …, 70j)는 비교기를 통해 프로그램된 데이터와 프로그램 후 읽어들인 데이터가 서로 일치하는지 여부를 확인하고, 확인 결과 서로 일치하면 활성화된 베리파이 패스신호(VerifyPass<i>)를 대응되는 데이터 래치 회로(30a, …, 30j)로 발생한다. 그리고, 확인 결과 서로 일치하지 않으면, 각각의 감지 회로(70a, …, 70j) 는 베리파이 페일을 의미하는 로우 레벨의 베리파이 패스신호(VerifyPass<i>)를 대응되는 데이터 래치 회로(30a, …, 30j)로 발생한다.
앞에서 설명한 바와 같이, 스캔클럭 발생부(20)에 의해 N 개의 스캔클럭신호(
Figure 112004041922275-pat00009
,
Figure 112004041922275-pat00010
)가 병렬로 발생되면, 래치회로(30)는 스캔클럭신호(
Figure 112004041922275-pat00011
,
Figure 112004041922275-pat00012
)와, 버퍼(29)로부터 전송된 N 개의 프로그램 데이터(Data<N:1>), 및 감지부(70)로부터 발생된 베리파이 패스신호(VerifyPass<i>)에 응답해서, "0"의 값을 가지는 데이터를 병렬로 찾아내어 저장한다. 프로그램 비트 카운터(40)는 래치회로(30)가 "0"의 값을 가지는 데이터를 찾아낼 때마다 그 개수를 카운트하고, 카운트된 값이 최대 동시 프로그램 개수가 되거나, 또는 마지막 스캔클럭신호가 입력되면, 동시 프로그램 활성화 신호(BitMax)를 스캔클럭 발생부(20) 및 프로그램 제어부(60)로 발생하여, 스캔클럭 발생부(20)로 하여금 프로그램 중에는 스캔클럭신호(ScanCLK<i>)를 발생하지 않도록 하고, 프로그램 제어부(60)로 하여금 프로그램 수행신호(PgmExecute)를 발생하도록 한다. 프로그램 드라이버(60)는 고전압 발생부(미 도시됨)로부터 프로그램전압(Vbl)과, 프로그램 제어부(50)로부터 발생된 프로그램 수행신호(PgmExecute)에 응답해서, "0"의 값을 갖는 데이터를 최대 동시 프로그램 개수 만큼 동시에 프로그램 한다. 그리고, 감지부(70)는 프로그램이 수행된 메모리 셀에 대한 프로그램 완료 여부를 판별하여 반도체 메모리 장치(100)의 재 프로그램 여부를 결정한다.
예를 들어, 프로그램하기 위해 입력된 데이터가 총 8 비트이고, 동시에 프로 그램할 수 있는 최대 비트 수(즉, 최대 동시 프로그램 비트 수)가 4라고 가정할 때, 본 발명에 따른 반도체 메모리 장치(100)의 동작 타이밍은 다음과 같다.
도 2 및 도 3은 도 1에 도시된 반도체 메모리 장치(100)에서 수행되는 병렬 비트 스캐닝 프로그램에 대한 동작 타이밍을 보여주는 타이밍도이다. 도 2 및 도 3에는 8 비트의 프로그램 데이터 중 상위의 4 비트에 대한 순방향 스캔과, 하위의 4 비트에 대한 역방향 스캔이 동시에 수행될 때의 타이밍도가 도시되어 있다.
도 2를 참조하면, 프로그램 데이터(Data<N:1>)가 "00000000"인 경우, 래치 리셋 신호(LatchReset)가 토글링 되어 데이터 래치 회로들(30a, … 30j)이 초기화되면, 순방향 스캔을 위한 제 1 그룹의 스캔클럭신호(ScanCLK<4:1>)와 역방향 스캔을 위한 제 2 그룹의 스캔클럭신호(ScanCLK<5:8>)가 각각 차례대로 토글링 된다. 여기서, 제 1 그룹의 스캔클럭신호(ScanCLK<4:1>)는 내부 클럭신호(CLK)의 상승 에지마다 토글링되고, 제 2 그룹의 스캔클럭신호(ScanCLK<5:8>)는 내부 클럭신호(CLK)의 하강 에지마다 토글링된다.
래치 리셋 신호(LatchReset)는 프로그램 비트 카운터(40)로부터 프로그램이 수행될 때마다 매번 주기적으로 발생된다. 래치 리셋 신호(LatchReset)는 최초 프로그램시에는 반도체 메모리 장치(100) 내부에 구비된 인터페이스 장치(100)로부터 발생되어 데이터 래치 회로들(30a, … 30j)을 초기화시킨다. 그리고, 베리파이 패스신호(VerifyPass<i>)는 프로그램이 수행된 후 감지부(70)로부터 발생된다. 베리파이 패스신호(VerifyPass<i>)는 최초 프로그램시에는 그 값이 모두 로우 레벨로 초기화되어, 프로그램 동작이 수행되도록 한다.
래치 리셋 신호(LatchReset)가 토글링 되고 나면, 각각의 데이터 래치 회로(30a, …, 30j)는 각 프로그램 데이터(Data<i>)가 "1"의 값을 갖는지 또는 "0"의 값을 갖는지에 따라 하이 또는 로우 레벨의 비트라인 선택신호(BLselect<i>)와 프로그램 카운트 신호(PgmCount<i>)의 레벨을 결정한다. 예를 들어, 각각의 데이터 래치 회로(30a, …, 30j)는 해당 프로그램 데이터가 "0"의 값을 가질 때에는 활성화된 비트라인 선택신호(BLselect<i>) 및 활성화된 프로그램 카운트 신호(PgmCount<i>)를 발생하고, 해당 프로그램 데이터가 "1"의 값을 가질 때에는 비활성화된 비트라인 선택신호(BLselect<i>) 및 비활성화된 프로그램 카운트 신호(PgmCount<i>)를 각각 발생한다. 이와 같은 데이터 래치부(30)의 데이터 판별 동작은, 내부 클럭신호(CLK)의 각 주기에서 활성화 된 두 개의 스캔클럭신호들에 의해 병렬로 수행된다.
예를 들어, 내부 클럭신호(CLK)의 첫 번째 주기 동안 제 1 및 제 8 스캔클럭신호들(ScanCLK<1>, ScanCLK<8>)이 토글링되면, 토글링된 제 1 및 제 8 스캔클럭신호들(ScanCLK<1>, ScanCLK<8>)에 응답해서 "0"의 데이터(1st Data 0, 2nd Data 0)들이 검출된다. 그리고, "0"의 데이터(1st Data 0, 2nd Data 0)의 검출 결과에 따라 활성화된 제 1 및 제 8 비트라인 선택신호(BLselect<1>, BLselect<8>)와, 활성화된 제 1 및 제 8 프로그램 카운트 신호(PgmCount<1>, PgmCount<8>)가 발생되고, 해당 데이터(1st Data 0, 2nd Data 0)가 래치 된다. 프로그램 비트 카운터(20)는 제1 및 제 8 데이터 래치 회로로부터 발생된 제 1 및 제 8 프로그램 카운트 신호(PgmCount<1>, PgmCount<8>)에 응답해서 2회의 카운트-업 동작을 수행한다.
계속해서, 내부 클럭신호(CLK)의 두 번째 주기 동안 제 2 및 제 7 스캔클럭신호들(ScanCLK<2>, ScanCLK<7>)이 토글링되면, 토글링된 제 2 및 제 7 스캔클럭신호들(ScanCLK<2>, ScanCLK<7>)에 응답해서 "0"의 데이터(3rd Data 0, 4th Data 0)들이 검출된다. 그리고, "0"의 데이터(3rd Data 0, 4th Data 0)의 검출 결과에 따라 활성화된 제 2 및 제 7 비트라인 선택신호(BLselect<2>, BLselect<7>)와, 활성화된 제 2 및 제 7 프로그램 카운트 신호(PgmCount<2>, PgmCount<7>)가 발생되고, 해당 데이터(3rd Data 0, 4th Data 0)가 래치 된다. 프로그램 비트 카운터(20)는 제2 및 제 7 데이터 래치 회로로부터 발생된 제 2 및 제 7 프로그램 카운트 신호(PgmCount<2>, PgmCount<7>)에 응답해서 2회의 카운트-업 동작을 더 수행한다.
그리고, 카운트 된 값이 최대 동시 프로그램 비트 수인 4가 되면, 동시에 프로그램 될 4 개의 데이터를 모두 찾았음을 알려 주는 동시 프로그램 활성화 신호(BitMax)를 활성화 시킨다. 동시 프로그램 활성화 신호(BitMax)가 활성화되면, 프로그램 제어부(50)는 프로그램의 시작을 알리는 프로그램 수행신호(PgmExecute)를 활성화시킨다.
그 결과, "0"의 값을 갖는 4 개의 데이터(Data<1>, Data<2>, Data<7>, Data<8>)에 대한 프로그램 동작이 동시에 수행된다. 동시 프로그램 활성화 신호(BitMax)가 활성화되어 있는 동안 스캔클럭 발생부(20)는 스캔클럭신호를 발생하지 않고, 프로그램 수행신호(PgmExecute)의 활성화 구간이 종료될 때까지 스캔클럭신호의 발생을 홀딩시킨다. 프로그램 수행신호(PgmExecute)의 활성화 구간이 프로그램시간 제어신호(Time Out)에 의해 종료되면, 래치 리셋신호(LatchReset)가 1번 토 글링하여 프로그램 비트 카운터(20)와 데이터 래치(30)를 초기화하고, 나머지 데이터(Data<3>, Data<4>, Data<5>, Data<6>)에 대한 프로그램이 전술한 내용과 동일한 과정으로 수행된다.
도 3을 참조하면, 프로그램 데이터(Data<N:1>)가 "10101010"인 경우, 제2, 제4, 제6, 및 제8 데이터(Data<2>, Data<4>, Data<6>, Data<8>) 만이 "0"의 값을 가지므로, "0"의 데이터를 찾아내는 데이터 스캐닝 동작은 마지막에 발생되는 스캔 클럭신호인 제 5 스캔클럭신호(ScanCLK<5>)가 활성화될 때까지 계속된다. 그리고, 4개의 "0"의 데이터를 모두 찾게 되면, 그때서야 1회의 프로그램을 수행하게 된다. 이 경우, 프로그램 데이터의 값에 상관없이 N 비트(예를 들면, 8비트)의 프로그램 데이터를 동시에 프로그램 할 수 있는 비트(예를 들면, 4비트)씩 무조건 나누어 프로그램을 수행하는 종래 기술과 비교해 볼 때, 본 발명은 "0"의 데이터의 개수에 따라 단 1번에 프로그램이 완료되므로, 프로그램에 소요되는 시간이 절반으로 단축되는 효과가 있다. 뿐만 아니라, "0" 데이터를 검색하는 스캐닝 과정을 병렬로 처리하기 때문에, 프로그램에 소요되는 시간을 더욱 줄일 수 있다.
이 같은 프로그램 시간의 단축 효과는, 프로그램해야 할 비트수가 증가할수록 더 증대된다. 예를 들어, 프로그램 데이터가 워드로 입력되고, 동시에 프로그램 할 수 있는 비트 수가 4비트라 할 때, 종래의 프로그램 방법에서는 반드시 4비트씩 4회에 걸쳐 프로그램을 수행해야 하지만, 본 발명에서는 "0"의 값을 갖는 데이터의 개수가 4개 이하이면 1회, 5 내지 8개이면 2회, 9 내지 12개이면 3회, 그리고 13 내지 16개이면 4회에 걸쳐 프로그램을 완료할 수 있다. 즉, "0"의 값을 갖는 데이 터의 개수에 따라 최대 1/4 까지 프로그램 시간을 단축할 수 있된다. 뿐만 아니라, 본 발명에서는 "0" 데이터를 검색하는 스캐닝 과정을 병렬로 처리하기 때문에, 프로그램에 소요되는 시간을 더욱 줄일 수 있다. 이 같은 프로그램 방식은 데이터 구성에 있어 어떠한 제약도 받지 않는 특징을 갖는다. 일반적으로, "0"의 값을 갖는 데이터와 "1"의 값을 갖는 데이터의 확률적 분포는 평균적으로 같다고 할 수 있으므로, 프로그램 시간의 단축 효과는 약 50%라 할 수 있다. 이와 같은 본 발명의 각 구성 요소에 대한 상세 구성은 다음과 같다.
도 4는 도 1에 도시된 스캔클럭 발생부(20)의 회로도이다. 도 4를 참조하면, 스캔클럭 발생부(20)는 제 1 스캔클럭 발생부(22)와 제 2 스캔클럭 발생부(24)를 포함한다. 제 1 스캔클럭 발생부(22)는 순방향 스캔에 사용될 N/2 개의 스캔클럭신호들(
Figure 112004041922275-pat00013
)을 발생하고, 제 2 스캔클럭 발생부(24)는 역방향 스캔에 사용될 N/2개의 스캔클럭신호들(
Figure 112004041922275-pat00014
)을 발생한다.
제 1 스캔클럭 발생부(22)는 신호 입력부(221), 카운트부(225), 및 디코딩부(227)를 포함한다.
신호 입력부(221)는 인버터와 NOR 게이트로 구성되어, 일정 주기로 입력되는 내부 클럭신호(CLK)의 반전된 값과, 동시 프로그램 활성화 신호(BitMax)에 대한 논리 NOR 연산을 수행하고, 동시 프로그램 활성화 신호(BitMax)가 입력되기 전까지 입력된 내부 클럭신호(CLK)만을 카운트부(225)로 전달하는 기능을 수행한다. 카운트부(225)는 3-비트 카운터로 구성되어, 신호 입력부(221)로부터 입력된 클럭신호 (CLK)의 개수를 카운트한다. 디코딩부(227)는 카운트부(225)의 출력을 디코딩하여, 내부 클럭신호(CLK)의 각 주기마다 1번씩 차례로 토글링 되는 복수 개의 스캔클럭신호(ScanCLK<1>, …, ScanCLK<4>)를 순차적으로 발생한다.
신호 입력부(221)는 활성화된 동시 프로그램 활성화 신호(BitMax)가 입력되면 로우 레벨의 신호를 출력하여 카운트부(225)로 하여금 카운트 동작을 수행하지 않도록 한다. 그 결과, 동시 프로그램 활성화 신호(BitMax)가 활성화되는 프로그램 구간 동안 제 1 스캔클럭 발생부(22)는 스캔클럭신호(ScanCLK<1>, …, ScanCLK<4>)의 발생을 중단하게 되고, 프로그램이 종료되어 동시 프로그램 활성화 신호(BitMax)가 비활성화되면 다시 클럭신호(CLK)에 대한 카운팅을 수행하여 다음 차례의 스캔클럭신호를 생성하게 된다.
제 2 스캔클럭 발생부(24)는 신호 입력부(241), 카운트부(245), 및 디코딩부(247)를 포함한다. 제 2 스캔클럭 발생부(24)의 회로 구성은, 카운트부(245)가 반전된 입력 신호를 받아들이는 것을 제외하면 제 1 스캔클럭 발생부(22)와 실질적으로 동일하다. 따라서, 중복되는 설명은 이하 생략하기로 한다.
이와 같은 카운터부(225, 245)의 구성으로 인해, 제 1 스캔클럭 발생부(22)는 내부 클럭신호(CLK)의 상승 에지에 토글링된 스캔클럭신호들(ScanCLK<1>, …, ScanCLK<4>)을 발생하는 반면, 제 2 스캔클럭 발생부(24)는 내부 클럭신호(CLK)의 하강 에지에 토글링된 스캔클럭신호들(ScanCLK<8>, …, ScanCLK<5>)을 발생하게 된다.
도 5는 도1에 도시된 데이터 래치회로(30i)의 회로도이다. 도 5를 참조하면, 데이터 래치회로(30i)는 데이터 검출부(31) 및 데이터 저장부(35)를 포함한다.
데이터 검출부(31)는 NOR 게이트, NAND 게이트, 및 인버터로 구성되어, 베리파이 패스신호(VerifyPass<i>)와 프로그램 데이터(Data<i>)에 대한 논리 NOR 연산을 수행하고, 상기 논리 NOR 연산 결과와 스캔클럭신호(ScanCLK<i>)에 대한 논리 NAND 연산을 수행한다. 그리고 나서, 상기 논리 NAND 연산 결과를 반전하여 프로그램 카운트 신호(PgmCount<i>)로서 출력한다. 예를 들어, 프로그램이 올바로 수행되어 더 이상의 프로그램이 필요 없는 경우에는 데이터 검출부(31)로 활성화된 베리파이 패스신호(VerifyPass<i>)가 입력되어, 비활성화된 프로그램 카운트 신호(PgmCount<i>)가 출력된다. 그리고, 프로그램이 올바로 수행되지 않아 재 프로그램이 수행되어야 할 경우에는 데이터 검출부(31)로 비활성화된 베리파이 패스신호(VerifyPass<i>)가 입력된다. 이 때, 프로그램 데이터(Data<i>)의 값이 "0"의 값을 가지면, 데이터 검출부(31) 해당 데이터의 스캔클럭신호(ScanCLK<i>)에 동기 되어 활성화된 프로그램 카운트 신호(PgmCount<i>)를 출력하게 된다.
데이터 저장부(35)는 T-플립플롭으로 구성되어, 데이터 검출부(31)에서 "0"의 데이터로 검출된 데이터를 저장하는 기능을 수행한다. 데이터 검출부(31)에 의해 "0"의 값을 가지는 데이터(Data<i>)가 검출되어, 활성화된 프로그램 카운트 신호(PgmCount<i>)가 발생되면, 데이터 저장부(35)는 상기 프로그램 카운트 신호(PgmCount<i>)를 클럭입력으로 받아들여, 활성화된 비트라인 선택신호(BLselect<i>)를 발생한다. 본 발명에서는 이 비트라인 선택신호(BLselect<i>)에 의해 선택된 해당 비트라인 만이 실질적으로 프로그램 된다. 데이터 저장부(35)는 프로그램 비트 카운터(40)로부터 발생된 래치 리셋신호(LatchReset)에 응답해서 초기화되는데, 이와 같은 구성은 해당 비트가 다음 번 프로그램시 더 이상 프로그램되지 않도록 해 준다. 또한, 상기와 같은 리셋 과정에 의하면, 프로그램 모드 초기와 프로그램 수행 직후의 비트라인 선택신호(BLselect<i>)의 생성을 담당하는 플립플롭이 리셋 되어, 1번 프로그램된 비트가 다음 번 프로그램 수행 구간에서 더 이상 프로그램되지 않도록 해 준다.
도 6은 도1에 도시된 프로그램 비트 카운터(40)의 회로도이다. 도 6을 참조하면, 프로그램 비트 카운터(40)는 신호 입력부(41), 리셋 제어부(42), 카운트부(45), 및 데이터 출력부(46)를 포함한다.
신호 입력부(41)는 데이터 래치(30)로부터 발생된 복수 개의 프로그램 카운트 신호(PgmCount<1> 내지 PgmCount<8>)를 받아들이고, 이들 중 하나라도 활성화된 신호가 있으면 활성화된 출력 신호를 카운트부(45)로 출력한다. 카운트부(45)는 3-비트 카운터로 구성되어, 신호 입력부(41)로부터 활성화된 신호가 입력될 때마다(즉, 데이터 래치(30)가 "0"의 데이터를 검색해 낼 때마다) 카운트 업 되어, 동시에 프로그램될 데이터의 개수를 결정하게 된다.
데이터 출력부(46)는 카운트부(45)에서 카운트된 값이 최대 동시 프로그램 개수와 같은지, 또는 마지막 스캔클럭신호(예를 들면, ScanCLK<5>)가 입력되었는지를 판별한다. 판별 결과, 카운트된 값이 최대 동시 프로그램 개수와 같거나, 마지막 스캔클럭신호(ScanCLK<5>)가 입력되었으면, 활성화된 동시 프로그램 활성화 신호(BitMax)를 출력한다. 이를 위해 데이터 출력부(46)는 카운트부(45)의 출력과 마 지막 스캔클럭신호(ScanCLK<5>)에 대한 논리 NOR 연산을 수행하는 NOR 게이트(47)와, NOR 게이트(47)의 출력 신호를 래치 시켜주는 래치부(48), 및 래치부(48)의 출력을 반전하여 출력하는 제1 인버터(49)를 포함한다.
리셋 제어부(42)는 프로그램 제어부(50)로부터 발생된 프로그램 수행 신호(PgmExecute)를 이용하여 카운트부(45)를 리셋시키고, 프로그램 수행 신호(PgmExecute)의 반전된 값을 래치 리셋신호(LatchReset)로서 출력한다. 이를 위해 리셋 제어부(42)는 프로그램 수행 신호(PgmExecute)를 반전된 값을 이용하여 상승 에지에서 활성화되는 펄스로 발생하는 펄스 발생부(43)와, 펄스 발생부(43)의 출력 신호를 반전하여 래치 리셋신호(LatchReset)로서 출력하는 인버터(44)를 포함한다.
이와 같은 구성에 의해서, 프로그램 비트 카운터(40)는 8개의 데이터 래치 회로(30a, …30j)로부터 각각 입력되는 프로그램 카운트 신호(PgmCount<8:1>) 중 1개라도 하이 레벨을 가지면, 이를 카운트할 수 있게 된다. 그리고, 카운트된 값이 정해진 개수(즉, 최대 동시 프로그램 개수)가 되면, 활성화된 동시 프로그램 활성화 신호(BitMax)를 발생한다. 이 외에도, 프로그램 비트 카운터(40)는 마지막 스캔클럭신호(ScanCLK<5>)가 토글되었는지를 모니터링하고, 마지막 스캔클럭신호(ScanCLK<5>)가 토글되었으면, 비록 카운트된 값이 최대 동시 프로그램 개수인 4비트가 되지 않았다 하더라도, 이제까지 찾아낸 비트들이 동시에 프로그램될 수 있도록 활성화된 동시 프로그램 활성화 신호(BitMax)를 발생한다.
도 7은 도 1에 도시된 프로그램 제어부(50)의 회로도이다. 도 7을 참조하면 프로그램 제어부(50)는 토글링부(55)와 신호 출력부(57)를 포함한다.
토글링부(55)는 T-플립플롭으로 구성되어, 클럭 입력단자로 동시 프로그램 활성화 신호(BitMax)를 받아들이고, 토글링된 결과를 출력한다. 토글링부(55)는 활성화된 동시 프로그램 활성화 신호(BitMax)가 입력되면 그것의 상승 에지(rising edge)에서 토글링되어, 활성화된 프로그램 수행 신호(PgmExecute)를 발생한다. 그리고, 신호 출력부(57)는 토글링부(55)로부터 발생된 프로그램 수행 신호(PgmExecute)를 소정시간 지연하여 출력한다.
한편, 토글링부(55)는 프로그램 수행 신호(PgmExecute)를 발생한 후 일정 시간이 경과한 다음에 리셋단자로 입력된 프로그램시간 제어신호(Time Out)에 응답해서 리셋된다. 그 결과, 활성화되었던 프로그램 수행 신호(PgmExecute)가 비활성화되어, "0"의 데이터를 찾아내는 스캔 동작이 다시 수행될 수 있도록 한다.
도 8은 도 1에 도시된 프로그램 드라이브 회로(60i)의 회로도이다.
프로그램 드라이브 회로(60i)는 프로그램하기 위한 비트 라인 전압을 선택적으로 인가하기 위한 회로로서, 비트라인 선택신호(BLselect<i>)에 의해 해당 비트 라인(BL<i>)이 선택되면, 프로그램 구간 동안 해당 비트 라인(BL<i>)으로 프로그램을 위한 고전압(Vbl)을 인가하는 레벨 쉬프터(level shifter)로서의 기능을 수행한다.
도 8을 참조하면, 프로그램 드라이브 회로(60i)는 NAND 게이트와 인버터로 구성된 데이터 입력부(61)를 통해, 프로그램 수행 신호(PgmExecute)와 비트라인 선택신호(BLselect<i>)가 모두 활성화 되었는지 여부를 검출한다. 검출 결과, 두 신호가 모두 활성화 되었으면 제1 노드(N1)로 하이 레벨의 신호를 출력한다. 제1 노 드(N1)에 입력된 하이 레벨의 신호는 제1 NMOS 트랜지스터(65)의 제어 게이트로 인가된다. 그리고, 상기 제1 노드(N1)에 인가된 신호는 인버터(63)를 통해 로우 레벨로 반전되어 제2 NMOS 트랜지스터(66)의 제어 게이트로 인가된다.
제1 NMOS 트랜지스터(65)는 제어 단자로 인가된 하이 레벨의 신호에 의해 턴 온 되고, 제2 NMOS 트랜지스터(66)는 제어 단자로 인가된 로우 레벨의 신호에 의해 각각 턴 오프 된다. 제2 노드(N2)의 전압 레벨은 턴 온 된 제1 NMOS 트랜지스터(65)의 방전 동작에 의해 접지 레벨로 낮아지게 된다. 제2 노드(N2)의 전압이 접지 레벨로 낮아짐에 따라 제1 PMOS 트랜지스터(67)의 제어 단자로 로우 레벨의 신호가 인가되고, 그 결과 제1 PMOS 트랜지스터(67)가 턴 온 된다.
제 3 노드(N3)의 전압 레벨은 턴 온 된 제1 PMOS 트랜지스터(67)의 챠징 동작에 의해 프로그램 전압 레벨(Vbl)로 상승하게 되고, 상승된 제 3 노드(N3)의 전압에 의해 제2 PMOS 트랜지스터(68)는 턴 오프 상태를 유지하게 된다. 그 결과, 제 3 노드(N3)에 충전된 하이 레벨의 프로그램 전압(Vbl)은 해당 비트 라인(BL<i>)에게 제공되어, 해당 메모리 셀을 프로그램 하게 된다.
앞에서 설명한 바와 같이, 본 발명에 따른 불휘발성 메모리 장치(100)는, "0" 또는 "1"의 값을 갖는 복수개의 프로그램 데이터 중 실질적으로 프로그램되는 "0"의 데이터만 골라낸 후, 이를 소정 비트 단위로 동시에 프로그램해 주기 때문에, 프로그램될 데이터의 값에 상관없이 일정 개수만큼씩 일률적으로 프로그램하는 종래의 프로그램 방식에 비해, 프로그램하는데 걸리는 시간을 현저히 줄일 수 있다.
이상에서, 본 발명에 따른 회로의 구성 및 동작을 상기한 설명 및 도면에 따라 도시하였지만 이는 예를 들어 설명한 것에 불과하며 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 다양한 변화 및 변경이 가능함은 물론이다.
이상과 같은 본 발명에 의하면, 복수 개의 프로그램 데이터 중 실제로 프로그램되는 데이터(즉, 0의 값을 갖는 데이터)만 골라내어 한꺼번에 프로그램을 수행하므로, 데이터의 프로그램 시간이 단축된다.

Claims (15)

  1. 메모리 셀에 제1 또는 제2 값을 가지는 데이터를 프로그램하는 불휘발성 메모리 장치에 있어서:
    복수 개의 메모리 셀들을 포함하는 메모리 셀 어레이;
    일정 주기의 내부 클럭에 동기되어 복수 개의 스캔클럭신호들을 병렬로 발생하고, 상기 스캔클럭신호들에 응답하여 상기 제2 값을 갖는 데이터를 병렬로 검색하는 데이터 스캐닝부; 및
    상기 제 2 값을 갖는 데이터의 개수가 최대 동시 프로그램 비트수가 될 때마다 상기 검색된 데이터들을 동시에 프로그램하는 프로그램부를 포함하는 것을 특징으로 하는 불휘발성 메모리 장치.
  2. 제 1 항에 있어서,
    상기 데이터 스캐닝부는, 상기 제2 값을 갖는 데이터에 대한 순방향 검색과 역방향 검색을 병렬로 수행하는 것을 특징으로 하는 불휘발성 메모리 장치.
  3. 제 1 항에 있어서, 상기 데이터 스캐닝부는
    상기 내부 클럭신호에 응답해서 상기 복수 개의 스캔클럭신호들을 병렬로 발생하는 스캔클럭 발생부; 및
    상기 복수 개의 스캔클럭신호에 응답해서 상기 복수 개의 프로그램 데이터 중 상기 제2 값을 가지는 데이터를 검색하여 저장하는 데이터 래치부를 포함하는 것을 특징으로 하는 불휘발성 메모리 장치.
  4. 제 3 항에 있어서,
    상기 스캔클럭 발생부는 상기 검색된 데이터의 개수가 상기 최대 동시 프로그램 비트수가 되면 소정의 프로그램 시간 동안 상기 스캔클럭신호들의 발생을 중지시키는 것을 특징으로 하는 불휘발성 메모리 장치.
  5. 제 3 항에 있어서,
    상기 스캔클럭 발생부는 상기 내부 클럭의 각 주기 마다, 적어도 둘 이상의 활성화된 스캔클럭신호들을 발생하는 것을 특징으로 하는 불휘발성 메모리 장치.
  6. 제 1 항에 있어서,
    상기 스캔클럭신호들은, 상기 내부 클럭의 상승 에지 및 하강 에지 중 어느 하나에 동기되어 발생된 펄스 신호인 것을 특징으로 하는 불휘발성 메모리 장치.
  7. 제 3 항에 있어서,
    상기 데이터 래치부는 복수 개의 데이터 래치들을 포함하며,
    각각의 데이터 래치는,
    상기 병렬로 발생된 복수 개의 스캔클럭신호들 중 어느 하나에 응답하여, 상 기 프로그램 데이터의 값이 상기 제1 값인지 또는 상기 제2 값인지 여부를 검출하는 데이터 검출부; 및
    상기 데이터 검출 결과에 응답해서 상기 제2 값을 가지는 데이터를 저장하고, 상기 저장된 데이터에 대응되는 비트 라인을 활성화시키는 비트라인 활성화 신호를 출력하는 데이터 저장부를 포함하는 것을 특징으로 하는 불휘발성 메모리 장치.
  8. 제 7 항에 있어서,
    상기 데이터 저장부는 상기 데이터 검출부의 상기 검출 결과를 클럭 입력으로 받아들이고, 상기 입력 신호를 상기 비트라인 활성화 신호로서 출력하는 T-플립플롭인 것을 특징으로 하는 불휘발성 메모리 장치.
  9. 제 1 항에 있어서,
    상기 프로그램부는, 상기 제 1 값을 갖는 메모리 셀들에 대해서는 프로그램을 수행하지 않는 것을 특징으로 하는 불휘발성 메모리 장치.
  10. 제 1 항에 있어서,
    상기 프로그램부는, 상기 데이터 스캐닝부의 검색 결과에 응답해서 상기 제2 값을 가지는 데이터를 상기 최대 동시 프로그램 비트수 만큼씩 동시에 프로그램하는 것을 특징으로 하는 불휘발성 메모리 장치.
  11. 제 3 항에 있어서, 상기 프로그램부는
    상기 데이터 래치부의 상기 검색 결과와, 상기 병렬로 발생된 복수 개의 스캔클럭신호들에 응답해서 상기 제2 값을 가지는 데이터의 개수를 카운트하는 프로그램 비트 카운트부;
    상기 프로그램 비트 카운트부의 상기 카운트 결과에 응답해서, 상기 활성화된 비트 라인에 대응되는 해당 메모리 셀에 대한 프로그램 동작을 제어하는 프로그램 제어부; 및
    상기 프로그램 제어부의 제어에 응답해서 상기 데이터 래치부에 저장된 데이터를 상기 최대 동시 프로그램 비트 수 만큼 해당 메모리 셀을 동시에 프로그램하는 프로그램 드라이버를 포함하는 것을 특징으로 하는 불휘발성 메모리 장치.
  12. 제 11 항에 있어서,
    상기 프로그램부는, 상기 프로그램부에 의해 프로그램된 메모리 셀로부터 읽어들인 값이 상기 제2 값과 같은지를 확인하는 감지부를 더 포함하는 것을 특징으로 하는 불휘발성 메모리 장치.
  13. 제 11 항에 있어서,
    상기 프로그램 비트 카운트부는 상기 카운트 결과가 상기 최대 동시 프로그램 비트수에 도달하거나 마지막 스캔 입력신호가 입력된 경우 상기 카운트 동작을 중단하고, 동시 프로그램 활성화 신호를 상기 프로그램 제어부 및 상기 스캔클럭 발생부로 제공하는 것을 특징으로 하는 불휘발성 메모리 장치.
  14. 제 11 항에 있어서,
    상기 프로그램 제어부는 상기 프로그램 비트 카운트부로부터 입력된 상기 동시 프로그램 활성화 신호에 응답해서, 상기 활성화된 비트 라인에 대응되는 해당 메모리 셀에 대한 프로그램 수행 신호를 발생하는 것을 특징으로 하는 불휘발성 메모리 장치.
  15. 제 11 항에 있어서, 상기 프로그램 비트 카운트부는
    상기 데이터 래치부로부터 상기 검출 결과를 연속해서 받아들이는 데이터 입력부;
    상기 검출 결과에 응답해서 상기 데이터 래치부가 상기 제2 값을 갖는 데이터를 검색해 낼 때마다 동시에 프로그램될 데이터의 개수를 카운트 하는 카운트부;
    상기 카운트부에 의해 카운트된 값이 상기 최대 동시 프로그램 개수와 같거나 마지막 스캔클럭신호가 입력된 경우, 활성화된 동시 프로그램 활성화 신호를 출력하는 데이터 출력부; 및
    상기 프로그램 제어부로부터 발생된 상기 프로그램 수행 신호를 이용하여 상기 데이터 래치부를 리셋시키고, 상기 프로그램 수행 신호의 반전된 값을 이용하여 상기 카운터부를 리셋시키는 리셋 제어부를 포함하는 것을 특징으로 하는 불휘발성 메모리 장치.
KR1020040073883A 2004-09-15 2004-09-15 가속화된 비트 스캐닝 프로그램을 수행하는 불휘발성메모리 장치 KR100568117B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020040073883A KR100568117B1 (ko) 2004-09-15 2004-09-15 가속화된 비트 스캐닝 프로그램을 수행하는 불휘발성메모리 장치
US11/181,163 US7379372B2 (en) 2004-09-15 2005-07-13 Non-volatile memory device with scanning circuit and method
CNB2005100980195A CN100555454C (zh) 2004-09-15 2005-09-01 具有扫描电路和方法的非易失性存储器
JP2005259667A JP2006085896A (ja) 2004-09-15 2005-09-07 加速化されたビットスキャニングプログラムを実行する不揮発性メモリ装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020040073883A KR100568117B1 (ko) 2004-09-15 2004-09-15 가속화된 비트 스캐닝 프로그램을 수행하는 불휘발성메모리 장치

Publications (2)

Publication Number Publication Date
KR20060024995A KR20060024995A (ko) 2006-03-20
KR100568117B1 true KR100568117B1 (ko) 2006-04-05

Family

ID=36164224

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040073883A KR100568117B1 (ko) 2004-09-15 2004-09-15 가속화된 비트 스캐닝 프로그램을 수행하는 불휘발성메모리 장치

Country Status (3)

Country Link
JP (1) JP2006085896A (ko)
KR (1) KR100568117B1 (ko)
CN (1) CN100555454C (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7826276B2 (en) 2006-12-22 2010-11-02 Samsung Electronics Co., Ltd. Non-volatile memory device reducing data programming and verification time, and method of driving the same

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100764052B1 (ko) 2006-08-03 2007-10-08 삼성전자주식회사 유동적 어드레스 바운더리를 갖는 플래시 메모리 장치 및그것의 프로그램 방법
JP5702573B2 (ja) 2010-10-20 2015-04-15 スパンション エルエルシー 不揮発性半導体記憶装置およびそのデータ書き込み方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3324666B2 (ja) * 1993-10-25 2002-09-17 シャープ株式会社 不揮発性半導体記憶装置
JPH08321193A (ja) * 1995-05-23 1996-12-03 Sony Corp 半導体不揮発性記憶装置
JP4055103B2 (ja) * 2000-10-02 2008-03-05 株式会社ルネサステクノロジ 不揮発性メモリおよびそれを内蔵した半導体集積回路並びに不揮発性メモリの書込み方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7826276B2 (en) 2006-12-22 2010-11-02 Samsung Electronics Co., Ltd. Non-volatile memory device reducing data programming and verification time, and method of driving the same

Also Published As

Publication number Publication date
CN100555454C (zh) 2009-10-28
JP2006085896A (ja) 2006-03-30
CN1758378A (zh) 2006-04-12
KR20060024995A (ko) 2006-03-20

Similar Documents

Publication Publication Date Title
US6031760A (en) Semiconductor memory device and method of programming the same
KR100332001B1 (ko) 반도체불휘발성기억장치
US6937524B2 (en) Nonvolatile semiconductor memory device having a write control circuit
US6525960B2 (en) Nonvolatile semiconductor memory device including correction of erratic memory cell data
US9123423B2 (en) Programming operations in a memory device
US7580322B2 (en) High speed programming for nonvolatile memory
USRE44978E1 (en) Method of verifying programming of a nonvolatile memory device
US6222779B1 (en) Semiconductor storage device with automatic write/erase function
WO1997049086A1 (en) Flash memory address decoder with novel latch
JP2002319286A (ja) 不揮発性記憶装置および記憶システム
JPWO2006025083A1 (ja) 半導体装置、半導体装置の試験方法およびデータ書き込み方法
JPH0628899A (ja) 不揮発性半導体記憶装置
JP5992983B2 (ja) 不揮発性半導体記憶装置
US9767914B1 (en) Durable maintenance of memory cell electric current sense window following program-erase operations to a non-volatile memory
JP2013125576A (ja) 不揮発性半導体記憶装置
US6826081B2 (en) Nonvolatile semiconductor memory device, nonvolatile semiconductor memory device-integrated system, and defective block detecting method
JP2006024347A (ja) ビットスキャニングプログラムを実行する不揮発性メモリ装置
KR100264028B1 (ko) 부트 블럭 방식을 채용하는 불휘발성 메모리의데이타 소거 메카니즘
KR100645045B1 (ko) 불휘발성 메모리 장치 및 그것의 프로그램 방법
US6243291B1 (en) Two-stage pipeline sensing for page mode flash memory
US7379372B2 (en) Non-volatile memory device with scanning circuit and method
KR100568117B1 (ko) 가속화된 비트 스캐닝 프로그램을 수행하는 불휘발성메모리 장치
CN104123965A (zh) 闪存器件及其中闪存单元块的擦除方法
US7085169B2 (en) Flash memory device capable of reducing read time
US6229735B1 (en) Burst read mode word line boosting

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120229

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee