*민*
Bronze개인인증
팔로워0 팔로우
소개
등록된 소개글이 없습니다.
전문분야 등록된 전문분야가 없습니다.
판매자 정보
학교정보
입력된 정보가 없습니다.
직장정보
입력된 정보가 없습니다.
자격증
  • 입력된 정보가 없습니다.
판매지수
전체자료 19
검색어 입력폼
  • VHDL를 이용한 LCD 설계 평가A+최고예요
    과 목 : 논리회로설계실험과 제 명 : LCD담당교수 : 김 종 태학 과 : 전자전기공학학 년 : 3 학 년학 번 :이 름 :제 출 일 : 08. 05. 28IntroductionLCD을 동작하기 위해 ISE를 통해 구조를 파악하여 설계한다.- KIT동작을 위해 최소한 6개 이상의 process문을 이용하여 설계한다.- FPGA_CLK, FPGA_RSTB의 변화에 따른 동작 제어의 변화를 고려하여 설계한다.- 평소보다 많은 내부 signal을 사용해야 되므로 정확한 명칭으로 헷갈리지 않게 한다.- KIT의 LCD에 조원의 학번과 이니셜이 표시되게 하다.- 각 알파벳 및 숫자를 표시하기 위해 어떤 값을 넣어 줘야 하는 지 파악한다.ISE을 통해 KIT 설정하기- KIT의 각 pin을 설정해주고, KIT 동작에 필요한 몇 가지 사항을 설정 하여 준다.- 시행 과정 속에 문제가 생긴다면 이를 수정하여 KIT가 제대로 동작 할 수 있게 해준다.키트를 이용하여 실제 값이 제대로 나오는지 확인한다.- 만약 키트에 문제가 생긴다면, 이를 수정하여 올바른 값을 확인한다.Problem Statement- Describe what is the problem.LCD 모듈을 이용하여 조원의 학번과 이름 출력하기- 조원의 학번에서 년도 부분을 제외한 6자리 위와 같이 라인 1에 출력KMO!RKH?- 조원의 이름 이니셜을 라인 2에 출력(우리가 사용 할 LCD module은 최대 32글자 (16문자*2line)를 표시할 수 있는 Display Data RAM을 포함하고 있으며 5*8 도트의 폰트를 사용한다.)- 주어진 Pin table 이용PORTPINPORTPINClkP79LCD_D(2)P61Rst_nP205LCD_D(3)P62LCD_A(0)(RS)P50LCD_D(4)P63LCD_A(1)(R/W)P51LCD_D(5)P64LCD_ENP52LCD_D(6)P65LCD_D(0)P57LCD_D(7)P67LCD_C(1)P58- 각 state에 따른 출력 부분을 채워서 완성할 것- 초기화는 다음tion set : 2-line mode, display off-Display OFF : display off, cursor off, blink off-Entry mode set : Increment mode, Entire shift off- Display ON : display on, cursor off, blink off- Describe how do you solve the problem.LCD Module의 내부 Register- Instruction Register(IR) : D.D.RAM과 C.G.RAM에 대한 Address 정보와, Clear, 커서 이동에 대한 명령코드를 가지고 있음. 쓰기만 가능- ' Data Register(DR) : D.D.RAM, C.G.RAM에 데이터를 쓰거나 읽을 때 사용. 데이터를 읽을 경우 DR에 읽은 데이터 저장. IR에 주소를 쓰면 주소에 대한 LCD의 표시 데이터가 C.G.RAM, D.D.RAM으로 부터 DR로 전송' - Busy Flag(BF) : LCD의 기록모드에서 외부와 동기를 위해 사용되는 Flag. 외부에서 LCD에 기록한 후 LCD가 내부동작에 머무르고 있을 경우 Busy를 ‘1’로 두어 외부의 명령어를 무시.- ' Address Counter(AC) : AC는 D.D.RAM, C.G.RAM의 주소를 지정할 때 사용. IR에 주소 정보를 쓰면 AC로 전송. 데이터를 쓰면 AC는 자동적으로 +1 또는 -1을 수행- Display Data RAM(D.D.RAM) : 8bits 글자 코드의 디스플레이 데이터를 가지고 있음. D.D.RAM 내에 글자표시에 사용되지 않는 메모리 영역은 일반적인 데이터 RAM으로 사용될 수 있음. ( Line1과 line2는 주소가 연속적이지 않으므로 line2로 넘어가려면 주소 설정을 다시 해야 함 )ex) 40 같은 경우에 0100/0000으로 앞의 이진수의 4자리가 16진수의 첫째자리이고, 뒤에 4자리가 16진수의 둘째 자리로 표현해서 40이 01000000으로 표현되는*************415161-line0*************0708090A0B0C0D0E0F2-line4*************4748494A4B4C4D4E4F< D.D.RAM의 주소를 16진수로 나타낸 표 >- Character Generator ROM(C.G.ROM) : 글자발생기는 5*8 도트의 글자를 발생- Character Generator RAM(C.G.RAM) : 사용자가 프로그램으로 새로운 글자의 패턴을 만들 경우에 사용되는 RAM- Instruction SetRSR/WD7D6D5D4D3D2D1D0000011NF**- Function SetN=0이면 1-line mode, N=1이면 2-line mode로 표시하고, F=0이면 display off, F=1이면 display on로 표시된다. 2-line mode이므로 N=1, display off이어야 하므로 F=0이 된다.RSR/WD7D6D5D4D3D2D1D00000001DCB- Display OFF/OND=0이면 display off, D=1이면 display on 시키고, C=0이면 cursor off, C=1이면 cursor on이 된다. B=0이면 blink off, B=1이면 blink on 되어 커서가 글자위치에서 깜빡인다.RSR/WD7D6D5D4D3D2D1D000000001I/DSH- Entry mode setI/D=0이면 decrement mode, I/D=1이면 increment mode되고, SH=0이면 entire shift off, SH=1이면 entire shift on 된다. increment mode이므로 I/D=1, entire shift off이므로 SH=0이다.RSR/WD7D6D5D4D3D2D1D00000000001- Display clearLCD 화면을 clear한다.RSR/WD7D6D5D4D3D2D1D0000000001-- Return HomeD.D.RAM AC를 0으로 만들어 주고, 처음의 address로 이동한다..Implementation- NTop-level Module Type 지정- New Source 생성entity LCD_TEST isPort ( FPGA_RSTB : in STD_LOGIC;FPGA_clk : in STD_LOGIC;LCD_A : out STD_LOGIC_VECTOR(1 downto 0); LCD_EN : out STD_LOGIC;LCD_D : out STD_LOGIC_VECTOR(7 downto 0));end LCD_TEST;( VHDL Modual - File name : "lcd_test " 로 지정 )- entity문entity의 이름은 lcd_test로 하고. port를 구성한다. 기본적인 동작을 설정하는 FPGA_CLK, FPGA_RSTB pin을 사용한다. FPGA_RSTB는 reset port로 ‘0’일 때 초기화 시키는 동작을 제어하는 input이다. FPGA_CLK은 clock을 생성하는 port로 clk이 ‘0’과 ‘1’을 반복 하면서 lcd의 동작을 제어하는 input이다. LCD_A은 R/W에 관련된 output으로 2bit를 사용한다. LCD_A(0) 일 때는 RS에 대한 것으로 instruction하고, LCD_A(1)는 R/W에 관련된 것으로 LCD로부터 데이터를 read할 것인지 LCD에 데이터를 write할 것인지 결정하는 역할을 한다. LCD_EN은 enable 로서 1bit를 사용하여 명령이 입력될 때마다 1씩 증가하게 한다. LCD_D는 8bit의 output으로 써 KIT에 출력하고자 하는 문자를 표시하기 위해 각각의 문자는 8bit의 주소를 가지고 있기 때문에 8bit를 사용한다.- Signal 선언architecture Behavioral of LCD_TEST issignal load_100k : std_logic;signal clk_100k : std_logic;signal cnt_100k : std_logic_vector(7 downto 0);signal load_50 : std_logic;signal clk_50 : std_l_50 : std_logic_vector(11 downto 0);signal lcd_cnt : std_logic_vector(8 downto 0);signal lcd_state : std_logic_vector( 7 downto 0);signal lcd_db : std_logic_vector(7 downto 0);이번 실습에도 KIT를 이용한 실습인 만큼, process문도 많아지고, 내부 signal도 많아졌다. 이번 출력 값은 50Hz로 출력하기 때문에 load_100k, clk_100k, cnt_100k를 사용하여 100k의 분주를 만들어주기 위한 내부 signal로써, load_100k는 digital_clock에서 variable값과 같은 역할이고, clk_100k는 clock의 값을 변경하기 위한 내부 signal이고 cnt_100k는 100kHz로 바꾸기 위해 count해주는 signal이다. 마찬가지로 load_50, clk_50, cnt_50 역시 100kHz를 50Hz로 바뀌기 위한 내부 signal로 역할은 위와 같다. 요기서 cnt_50는 12bit의 signal인데 이는 100kHz를 50Hz로 바꾸기 위해서는 2000이라는 숫자까지 count해주어야 되기 때문에 bit수가 늘어난 것이다. lcd_cnt 9bit인데, 출력 값이 8bit이므로 8bit를 사용해야 되지 않을까라는 생각이 들지만, lcd_cnt(0)은 enable 신호이기 때문에 1bit가 추가된 9bit를 사용하는 것이다. lcd_state는 lcd_cnt에서 결국 1bit를 제외한 값이 들어가는 signal로 lcd_state의 변화에 따라 lcd_db에 실질적으로 출력하고자 하는 값이 인가되는 것이다. 따라서 lcd_state와 lcd_db는 8bit를 사용하는 것이다.- Clock 100KHz 분주하기 위한 Process문process(FPGA_RSTB, FPGA_clk, load_100k, cnt_100k)beginif FPGA_RSTB = '0' thencnt_100k
    공학/기술| 2010.05.27| 16페이지| 1,000원| 조회(1,404)
    미리보기
  • VHDL를 이용한 디지털 시계
    과 목 : 논리회로설계실험과 제 명 : 디지털 시계담당교수 : 김 종 태학 과 : 전자전기공학학 년 : 3 학 년학 번 :이 름 :제 출 일 : 08. 05. 21IntroductionDigital Clock의 구조를 파악하여 설계한다.- KIT동작을 위해 최소한 6개 이상의 process문을 이용하여 설계한다.- clk, rst_n의 변화에 따른 동작 제어의 변화를 고려하여 설계한다.- 평소보다 많은 내부 signal를 사용해야 되므로 정확한 명칭으로 헷갈리지 않게 한다.- KIT에 표시 되는 각 자리에서 CLOCK의 분기과정을 파악하여 생성해야 된다.세그먼트를 실행하기 위해 설정해 주어야 할 것을 익힌다.- pin 할당하는 방법 및 KIT를 작동에 필요한 상황을 설정한다.키트를 이용하여 실제 값이 제대로 나오는지 확인한다.- 만약 키트에 문제가 생긴다면, 이를 수정하여 올바른 값을 확인한다.Problem Statement- Describe what is the problem.이번 실험은 디지털 시계를 구성하는 것으로 4MHz의 오실레이터 clock을 분주하여 시계를 제작해야 된다. 이 때 시간을 나타내는 segment 2개, 분을 나타내는 segment 2개, 초를 나타내는 segment 2개를 이용하여 제작해야 된다.DIGIT110자리의 시간 단위DIGIT21자리의 시간 단위DIGIT310자리의 분 단위DIGIT41자리의 분 단위DIGIT510자리의 초 단위DIGIT61자리의 초 단위- 본 실험의 목적은 4MHz의 오실레이터 clock을 분주하여 디지털 시계를 제작하는 것으로 시간을 나타내는 세그먼트 2개, 분을 나타내는 세그먼트 2개, 초를 나타내는 세그먼트 2개를 이용하여 구성 할 것이다.▶ 이 때 비동기 Reset를 사용하고, 리셋 시 12:58:20로 초기화 되게 한다.초, 분 시 동작 사항초- 입력 클럭을 분주하여 1초 단위로 상승- 59초에서 60초로 넘어 갈 때 1분 카운트 발생, 이때 초는 00으로 초기화분- 1분 카운트 발생시 1분씩 증가- 59분에서 60분으로 넘어 갈 때 1시간 카운트 발생, 분은 00으로 초기화시- 1시간 카운트 발생시 1시간씩 증가- 12:59:59 다음은 1:00:00 으로 12시간제 적용- Pin Mapping주어진 table를 이용하여 VHDL에서User Constraints >> Assign Package Pins에 pin 값을 입력해준다.- Describe how do you solve the problem.① entity 선언 : 동작 제어에 필요한 rst_n(데이터 값의 초기화), 4MHz의 clock를 clk에 입력하고, Output으로 사용될 DIGIT를 ( 6 downt0 1)로 표기해주고, segment를 A, B, C, D, E, F, G, DP를 입력한다.② 내부 signal을 선언- 각 시분초의 십의 자리와 일의 자리를 카운트 하기위한 signal (hr10_cnt, hr01_cnt, min10_cnt, m01_cnt, s10_cnt, s01_cnt)과 각각의 자리를 카운트 하기위한 clk를 내부 signal (s10_clk, s01_clk, m10_clk, m01_clk, h01_clk)로 선언해주어야 한다.- 각 DIGIT, 출력 값, segment 값을 대신하여 쓰이는 내부 signal (sel, data, seg)의 존재가 필요하다. 3bit의 sel를 통해 6개의 DIGIT를 선언하고, 4bit의 data를 통해 0~9까지의 숫자를 선언할 수 있다. seg는 7segment를 선언해줄 내부 signal이다.③ Architecture 부분-여러 개의 process문으로 구성된다.- 내부 signal sel를 사용하여 case문을 이용하여 DIGIT를 선언해 주어야 한다.- FPGA는 동시에 처리하지 못하고, 한번에 하나의 DIGIT만을 동작하기 때문에, 빠른 속도로 6개의 DIGIT를 순서대로 인식하게 순환시켜야 된다. 이를 if-then구문을 이용하여 DIGIT를 순서에 맞게 1에서부터 6까지 순서대로 인식 시키도록 설정해 주어야 한다.- segment 입력를 해주는 process문이 필요하다. 이것은 동시에 일어나도 무관하므로 case문을 이용하여 각 data값에 따른 segment 입력를 설정해주어야 한다.- clk를 설정해주어야 하는데, 기본적인 FPGA는 4MHz이기 때문에 1초 주기의 clk를 사용하기 위해서는 0.5초 간격으로 반전되는 s01_clk를 설정해 주어야지 디지털 시계가 1초마다 변하는 정확한 시간의 폭은 설정해 줄 수 있다.- 마지막으로 s01_clk이 동작할 때 마다 순서에 맞게 s10_clk, m01_clk, m10_clk, h01_clk이 동작하도록 clk를 설정하고 각 단위에서 count의 동작을 구현 시켜 디지털 시계를 설계해야한다.Implementation- New Project 생성- Top-level Modual Type 지정- New Source 생성entity digital_clock isPort ( rst_n : in STD_LOGIC;clk : in STD_LOGIC;DIGIT : out STD_LOGIC_VECTOR (6 downto 1);SEG_A : out STD_LOGIC;SEG_B : out STD_LOGIC;SEG_C : out STD_LOGIC;SEG_D : out STD_LOGIC;SEG_E : out STD_LOGIC;SEG_F : out STD_LOGIC;SEG_G : out STD_LOGIC;SEG_DP : out STD_LOGIC);end digital_clock;( VHDL Modual - File name : "digital_clock " 로 지정 )- entity문entity의 이름은 digital_clock로 하고. port를 구성한다. 기본적인 동작을 설정하는 clk, rst_n pin을 사용한다. rst_n은 reset port로 ‘0’일 때 초기화 시키는 동작을 제어하는 input이다. clk은 clock을 생성하는 port로 clk이 ‘0’과 ‘1’을 반복 하면서 digital_clk의 동작을 제어하는 input이다. DIGIT (6 downt 1)은 digital_clock에서 표시될 시간의 자릿수를 나타내는 output으로써 DIGIT1부터 KID에서 가장 왼쪽을 나타내는 digit으로 10자리 시간을 나타내고, 그 다음 순서대로 DIGIT2(1자리 시간), DIGIT3(10자리 분), DIGIT4(1자리 분), DIGIT5(10자리 초), DIGIT6(1자리 초)를 KID에서도 순서대로 나타낼 수 있게 해주는 output이다. seg는 segment a~dp까지를 지정해 주는 port로 0~9까지의 숫자를 표현하기 위해 segment 각각의 'ON' 또는 'OFF'를 설정해주기 위한 output이다.- Signal 선언architecture Behavioral of digital_clock issignal s10_clk, s01_clk, m10_clk, m01_clk, h10_clk, h01_clk : std_logic;signal hr10_cnt, hr01_cnt : std_logic_vector( 3 downto 0 );signal min10_cnt, min01_cnt : std_logic_vector( 3 downto 0 );signal sec10_cnt, sec01_cnt : std_logic_vector( 3 downto 0 );signal sel : std_logic_vector( 2 downto 0 );signal data : std_logic_vector( 3 downto 0 );signal seg : std_logic_vector( 7 downto 0 );hr10_cnt, hr01_cnt, min10_cnt, m01_cnt, s10_cnt, s01_cnt는 각각의 시분초의 십의 자리와 일의 자릴르 count하여 출력하기 위한 내부 signal로 각 자릿수는 0~9까지를 표현해야 하기 때문에 (3 downto 0)을 사용하여 4bit로 설정해야한다.s10_clk, s01_clk, m10_clk, m01_clk, h01_clk은 각 자릿수는 변하는 폭 즉 clk의 폭이 다 다르기 때문에 다 다르게 표현해주기 위해 내부 signal로 표현해주는 거다. 실질적으로 우리가 입력해주는 clk하나지만 이 clk이 s01_clk에 영향을 주고, 또 s01_clk은 s10_clk의 영향을 주며, 각각 자릿수의 clk를 표현해주기 위해 필요한 signal이다.sel은 6개의 DIGIT을 선택해주는 signal로 6개의 digit를 표현하기 위해 3bit의 signal를 사용한다. data는 출력에 관여된 segment를 찾아서 출력해주는 역할로써 각 count에서 출력하고자 하는 값을 data로 보내어 data의 signal이 출력하고자 하는 값을 segment를 찾아 출력할 수 있게 해주는 signal이다. 따라서 역시 0~9를 표현할 수 있는 4bit의 signal로 선언해 주어야한다. seg는 7segment을 지정하기 위한 것으로 seg(7~0)이 seg(dp~a)순으로 지정되는 것이다.- DIGIT 선택 Processbeginprocess(sel)begincase sel iswhen "000" =>DIGIT
    공학/기술| 2010.05.27| 19페이지| 1,000원| 조회(713)
    미리보기
  • VHDL를 이용한 FSM 설계 및 키트 사용법
    과 목 : 논리회로설계실험과 제 명 : FSM설계 & 키드 사용법담당교수 : 김 종 태학 과 : 전자전기공학학 년 : 3 학 년학 번 :이 름 :제 출 일 : 08. 05. 14Introduction1) 키트 사용법7-segment의 원리를 알고, 주어진 파일의 작동 원리를 이해한다.- 7개의 segment로 어떻게 0~9까지 표현 가능 한가 ?세그먼트를 실행하기 위해 설정해 주어야 할 것을 익힌다.- pin 할당하는 방법 및 기타 설정 법을 배운다.키트를 이용하여 실제 값이 제대로 나오는지 확인한다.2) FSM 설계FSM은 일정한 조건하에 state를 바꿔 가면 동작하는데 이 순차적인 논리회로의 원리를 이해한다.-Binary / Gray counter 의 상태표 및 상태도를 먼저 파악한다.RST_N, CLK의 변화에 따른 동작 제어의 변화를 파악한다.CNT의 출력 값이 어떻게 출력되는지 내부 signal과의 연계를 생각하여 분석한다.- present state와 next state의 관계를 명확 시하여 내부 signal로 지정한다.Simulator 과정 중에 생기는 오류를 분석하고 수정하여 올바른 결과 값을 얻는다.- Testbench 를 직접 작성하여 Simulator로 입, 출력 signal을 확인Problem Statement- 키트 사용법- 7-Segment는 왼쪽부터 시계방향으로 a, b , c, d, e, f, g, 순으로 되어있고, 출력 할 때는 abcdefgdp의 순으로 bit 순서를 정해서 출력한다. 또 DIGIT를 설정해 주어야 하는데, “100000”이 가장 왼쪽에 있는 세그멘트이고 “010000”이 2번째 세그멘트 식으로 자릿수를 지정해 주어야 한다. 이제 DIGIT에 맞는 값을 SEG값으로 넣어주는데 0같은 경우는 “11111100”식으로 표현한다. 또 하나의 예로 “7”같은 경우는 “11100000”으로 표현해주면 된다- 7-Segment의 code가 완성되면 각 segment에 맞는 pin값을 설정해 주어야 한다.옆에 표와 값이 pin값을 segment에 할당해주고, 세그먼트 테스트 작업을 위해 나눠준 파일을 이용하여 segment가 pin에 제대로 할당 되었는지 확인 해주어야 한다.- FSM 설계- Describe what is the problem.- Finite State Machine일정한 천이 가능한 상태 내에서만 동작하려는 순차 논리 회로FSM의 출력과 다음 상태는 현재 상태와 출력에 의해 결정된다.- FSM의 State diagram 과 State transitiom table의 모양을 파악하고,작동 원리를 이해하여 회로를 구현해야 한다.▶ Mealy machineCLK의 이벤트와 상관없이 입력 값의 변화에 따라 출력이 즉시 반영 되는 형태,비동기식 동작 특성을 가지고 있다.state변화가 FF에 의해 이루어지면 그 state 값과 input의 조합으로 output을 내보낸다. clk 한 번 동작 할 때 state도 한번 변화하고 시간이 지남에 따라 state는 순차적으로 변하하면서 output를 출력한다.▶ Moore machine현재의 상태에 의해서만 출력 값이 결정된다.CLK와 함께 동작하는 동기식 동작 특성을 가지고 있다.오직 state의 변화에 따라서 결정된다. input, output에 관계없이 같은 결과를 내기 위해 많은 state를 필요로 하고 FF의 개수 역시 많이 필요하다.- Describe how do you solve the problem.- 위의 state diagram 과 state transition table에 맞는 회로를 구현 하여야 한다.▶ 우선적으로 CLK를 설정부터 생각 해줘야 되는데 평소의 enable이나 reset 대신 rst_n 핀이 있는데 이 값이 ‘0’ 일 때 CLK에 관계없이 ‘000’ 값을 출력해야 되므로 CLK보다 우선적으로 설정하고 그 다음에 CLK이 rising edge에서 작동 할 수 있도록 설정 해 주어야 한다. CLK이 rising에서 FF는 현재 받은 state 값을 next state 값으로 저장한다.▶ 다음 process문은 현재의 FSM이 Moore machine 형태로 작동되고 있으므로 output은 state로 하고 input은 어떤 것을 사용하든 상관없어 진다. process 문을 구현 할 때는 delay 시간 및 효율성을 생각하여 case문을 사용하여 현재의 state 상태에 따라 if문을 이용하여 binary / gray에 따른 next state 값을 하나하나의 경우에 따라 서술 해 주어야 한다.Implementation1) 키트 사용법- icampus에서 7-segment파일을 다운 받아 New Source를 통해 불러온다.- 프로젝트 생성 시Product category = AllFamily = Spartan3Device = XC3S200Package = PQ208Speed = -4 값과 일치하게끔 설정해준다.-Pin MappingUser Constraints >> Assign Package PinsPin table을 찾아 Pin 값을 입력해 준다.- Generate Programming File>> Startup Option>> FPGA Start-Up Clock을 JTAG로 변경- Configure Device (iMPACT) >> 7-seg파일 bit를 설정해준다.- Xc3s200 디바이스에서 programming2) FSM 설계- New Project 생성- Top-level Modual Type 지정- New Source 생성entity bin_gray_cnt isPort ( clk : in STD_LOGIC;rst_n : in STD_LOGIC;mode : in STD_LOGIC;cnt : out STD_LOGIC_VECTOR (2 downto 0));end bin_gray_cnt;( VHDL Modual - File name : "bin_gray_cnt " 로 지정 )- entity문entity의 이름은 bin_gray_cnt로 하고. port를 구성한다. 기본적인 동작을 설정하는 clk, rst_n pin을 사용한다. rst_n은 '0'일 때 출력 값을 clk과 상관없이 ‘000’ 값을 출력하는 pin이다. mode는 그 값이 따라 ‘0’ 일 때 gray count로 출력하고, ‘1’일 때 binary count로 출력한다. 2가지 경우기 때문에 1bit만 사용해도 된다. cnt는 output으로 세 자리의 수를 출력하기 때문에 3bit를 사용한다. 추가적인 따른 input은 오직 state에 의해서 출력 값이 결정되기 때문에 필요 없다.- Signal 선언architecture Behavioral of bin_gray_cnt issignal state : std_logic_vector(2 downto 0);signal next_state : std_logic_vector(2 downto 0);FSM은 Moore를 이용하면서 내부 signal로는 present state와 next state가 필요하다. 따라서 이 두 가지를 signal 선언 해주어야 되는데 이 값들은 세 자리의 수로 되어있기 때문에 3bit의 (2 downto 0)를 사용해 주어야 한다.=8이므로 총 8개의 종류의 수를 표현할 수 있다.- state 값 선언begincnt
    공학/기술| 2010.05.27| 13페이지| 1,000원| 조회(369)
    미리보기
  • VHDL를 이용한 Memory 설계
    과 목 : 논리회로설계실험과 제 명 : Memory담당교수 : 김 종 태학 과 : 전자전기공학학 년 : 3 학 년학 번 :이 름 :제 출 일 : 08. 05. 07IntroductionRam의 동작 원리를 이해한다.- 저장 된 값을 읽는 방식 이해. 구조적 특징CLK의 상승 에지에 따른 동기 enable, 동기 write enable 로 동작을 제어한다.- en 과 we의 변화를 통한 출력 값을 변화함을 확인한다.새로 나온 Type declaration을 통해 signal을 지정하고 이용하여 설계한다.Simulator 과정 중에 생기는 오류를 분석하고 수정하여 올바른 결과 값을 얻는다.- Testbench 를 직접 작성하여 Simulator로 입, 출력 signal을 확인Problem Statement- Describe what is the problem.ENWEADICLKDOLXXX↑XHLRead addressX↑Read dataHHWrite addressWrite data↑Write data▶ RAM의 우선적인 작동 원리를 이해하고, 설계해야 된다. RAM 은 위의 진리표와 같이 동작하는 구조인데, CLK가 rising edge에서 우선순위에 따라 동작한다. 우선적으로 Enable 이 high일 때 동작하고 그 다음으로 Write Enable이 high일 때 DI의 값을 address라는 주소라는 곳에 넣어지고, Write Enable이 low일 때 저장된 address의 값이 DO로 출력되는 구조를 가지고 있다.- Describe how do you solve the problem.▶ RAM은 구조적으로 5개의 input과 1개의 output를 가진다. RAM은 address 값을 인가 받으면 RAM의 address 번지 안에 data 값을 저장하고 이 후에 출력을 이 값을 불러오는 형태의 구조를 지니고 있다. signal들은 DI와 DO는 4bit의 정보를 담아야 되므로 4bit로 지정 해주고, addr은 역시 4bit의 주소를 지칭해주어야 되기 때문에 4bit로 지정해주지만, 동작 및 제어 하지 않는 input이다. addr는 계속 값이 변하면서 DI를 지정해 주기 때문에 signal을 따로 지정해줘서 설계해 주어야 한다. process문은 case문 보다는 순서에 맞게 동작해야 되므로 if문을 이용하는데 항상 우선순위를 고려하여 설계해 줘야한다. input 중 제일 우선시 되는 것은 CLK으로 CLK이 rising edge일 때 RAM이 동작하게 설계해주고 설계 시 enable 과 write enable은 쉽게 헷갈릴 수 있는데 우선적으로 enable이 1일 때 동작해야 되므로 먼저 enable를 지정해주고 write enable은 ‘1’일 때 address에 DI를 인가 받아 출력하고, ‘0'일 때는 address에 저장되어 있는 정보를 불러와서 출력한다.Implementation- New Project 생성- Top-level Modual Type 지정- New Source 생성entity raminfr isPort ( clk : in STD_LOGIC;en : in STD_LOGIC;we : in STD_LOGIC;addr : in STD_LOGIC_VECTOR (3 downto 0);di : in STD_LOGIC_VECTOR (3 downto 0);do : out STD_LOGIC_VECTOR (3 downto 0));end raminfr;( VHDL Modual - File name : "raminfr " 로 지정 )- entity문entity의 이름은 raminfr로 하고. port를 구성한다. clk, en, we는 기본적인 동작을 설정해주는 pin이다. addr는 주소 번지를 나타내 주는 걸로 4bit를 사용하여개의 주소를 활용할 수 있다. DI는 input data 값으로 we=‘1’일 때 addr로 입력 값을 저장해주는데 이 때의 입력 값이 DI값이 되는 것이다. DO는 output data로 기본적으로 addr에 저장된 값을 출력하는데, RAM의 조건에 따라서 we='1'이면 입력 값을 바로 출력하는 형태가 되는 것이고, we='0'이면 addr에 기존에 저장된 값을 출력하는 형태가 된다.- Signal 및 Type 선언architecture Behavioral of raminfr istype rom_type is array(15 downto 0) of std_logic_vector(3 downto 0);signal ram : rom_type;signal add : std_logic_vector (3 downto 0);오늘은 여태 사용하지 않았던 array type이 필요한데 array type을 통해 addr로 인가된 값을 저장하는 공간을 선언 하는 것이다. RAM에 저장할 정보는 4bit로 이루어진 하나 하나의 데이터가 총개 존재하는데 그동안 사용했던 std_logic_vector를 대신하여 16개를 하나로 묶을 수 있는 array란 표현을 통해 type를 선언해 주는 것 이다. “type rom_type is array(15 downto 0) of std_logic_vector(3 downto 0);” 이런 식으로 표현하면 4bit를 가진 16개의 공간을 가진 하나의 signal이 생기는 데, 단 개개인을 지정해주지 않았으므로 전원이 차단되면 값은 잃게 된다. 이것은 ROM과 RAM의 차이점이다. 또한 addr를 대신해서 RAM에서 addr 값을 받아 add를 통해 RAM를 동작하는 역할을 하는 add 내부 signal도 이 부분에서 지정해 줘야 된다.- Process문 선언( clk, en, we 순으로 process문은 if-then으로 선언한다. )process (clk)beginif (clk = '1' and clk'event) thenif (en = '1') thenif (we = '1') thenram(conv_integer(addr))
    공학/기술| 2010.05.27| 9페이지| 1,000원| 조회(254)
    미리보기
  • BJT를 이용한 증폭기 실험
    과 목 : 전자회로설계실험과 제 명 : BJT를 이용한 증폭기 실험담당교수 : 김 종 태학 과 : 전자전기공학학 년 : 3 학 년학 번 :이 름 :제 출 일 : 08. 11 . 27IntroductionCapacitor-coupled BJT 증폭기의 저주파 특성을 실험을 통해 확인한다.BJT 소자의 고주파 특성을 실험을 통해 확인한다.- Discrete Circuit과 Integrated Circuit 설계에 직접적 연관이 있는지를 고주파 특성에서 확인한다.Problem Statement▶ Describe what is the problem.E1.1 DC상태목표 : E1.2의 실험을 위해 DC 바이어스와 BJT의 소신호 파라미터를 확인한다.실험사항 :a) 입력을 접지시키고 노드 S, B, E, C의 DC 전압을 DVM으로 측정한다. 이 값을 사용하여 바이어스 전류와를 계산한다.(는 무시하고 는 크다고 가정한다.)E1.2 중간대역 응답목표 : coupling capacitor가 short, transistor의 junction capacitor는 open으로 동작하는 중간대역에서 CE 증폭기의 소신호 응답을 평가하라.실험사항 : a) 오실로스코프와 10x 프로브를 사용하여 S, B, E, C, D 의 peak to peak 전압을 측정하라. 오실로스코프의 민감도가 부족하다면 저주파에선 1x 프로브를 사용해도 좋다.E2.1 전반적인 주파수 응답특성목표 : coupling capacitor가 short, transistor의 junction capacitor는 open으로 동작하는 중간대역실험 사항 : a) 주파수를 낮춰가며 노드 S,D의 전압을 측정하여, 전압이득이배로 떨어지는 저주파 3dB주파수을구하시오.E3.1 기본 AC측정목표 : 수정된 CE 증폭기의 고주파응답 특성 측정실험사항 :a) 오실로스코프의 측정 모드를 ac 결합으로 설정하고, S,B,C 노드의 최대값을 측정하여 전압이득를 구하시오. 노드 B에서 들여다 본 입력 저항을 구하시오.b) 입력 신호원의 이의 추가 캐패시터 값을 차례로 2배로 늘리며 3dB 주파수의 변화를 관측하여 가장 큰 영향을 주는 캐패시터를 확인하시오.c) 추가한 캐패시터 값을 모두 두 배로 한 후 새로운 3dB 주파수 를 구하시오.E5.1 중간대역 이득과 상위 cutoff목표 :고주파에서 Emitter follower의 특성 실험실험사항 :a) 노드 S, B, E, D 의 전압을 측정하고 S부터 D와 B부터 D의 이득을 구하시오.b) 신호원 주파수를 증가시켜 가며 출력 전압이 3dB떨어지는 주파수을 구하시오.c)주파수에서 캐패시터의 용량을 하나씩 2배 키우면서에 가장 큰 영향을 주는 캐패시터를 구하시오.d) 영향력이 큰 쪽 캐패시터의 용량을 두배로 만들고,의 값을 반으로 줄인 후 3dB 주파수를 구하시오.▶ Describe how do you solve the problem.E1.1 DC상태기본적인 Common-Emitter 회로를 통해 고주파 동작에 중점을 두고 저주파 동작은 비교적 제한적으로 실험한다. bypass capacitor와 output-coupling capacitor가 있는 기본회로를 통해 BJT에서 유한한값에 의한 저주파 대역에서 입력저항에 큰 차이가 존재하고 바이어스 전류조건에서 BJT의이 훨씬 크다는 점을 이용하여 저주파의 이득을 감소하기 위해 emitter-bypass capacitors 값이 커야한다는 것을 이번 실험을 통해 알아 낼 수 있다. DC bias 상태의 각 노드의 전압을 알아보기 위해서는 입력단을 접지 시키고 공급 전압에 의한 각 노드의 전압을 측정하면 알 수 있는데 회로 상에 있는 커패시터는 DC bias에서는 open 되는 회로의 역할을 한다.E1.2 중간대역 응답CE 증폭기에 소신호를 인가하였을 때의 값을 가진다. 이 식으로 봤을 때 전압 이득의 값은 주파수에 영향을 받지 않는다.E2.1 전반적인 주파수 응답주파수를 낮추어 가며 전압이배 되는 저주파를 구하는 실험으로 옆의 그림의 그래프와 같이 주파수에 따른 전압 이득 값이 바뀌는데 본 주파수에할 수 있기 위해 사용하였다.가 큰 경우만 있다면 바이어스는 잡히나에서의 전압 강하량이 작아져 베이스 전위와 컬렉터 전위가 거의 비슷한 값을 갖게 되므로, 컬렉터 전위가 감소하는데 제한이 생긴다.를 사용함으로써가 큰 경우에도 베이스의 DC 전위가 대략정도를 유지하게 할 수 있다. 위와 똑같은 형태의 실험을 통해 주파수를 낮추어가며 3dB 주파수를 찾을 수 있는데을 이용하여 실험을 통해 구한 값으로 구할 수 있다.E4.2 고주파 영역CB 증폭기는 CE 증폭기에 비해 고주파에서도 전압 증폭이 가능하다. 이번 실험에서는 BJT의 베이스-에미터간에 1000㎊, 베이스-컬렉터 간에 100㎊를 달아 트랜지스터의 고주파 특성을 낮춰 주파수 특성을 실험한다. 외부에 붙인 캐패시터의 용량은 discrete 소자의 내부 캐패시턴스에 비해 100배 정도 크고, IC 보다는 1000배 정도 큰 값이다. 이번 실험 역시 주파수를 높여주면서 3dB 주파수를 찾아주는데 B-E와 B-C사이의 추가 커패시터를 번갈아 연결함으로써 3dB 주파수의 변화를 측정할 수 있다.E5.1 중간대역 이득과 상위 Cutoff고주파에서 전해 캐패시터는 매우 큰 인덕터가 되므로 에미터 결합 캐패시터는 전해와 세라믹 캐패시터의 병렬로 구성하였다. CB 증폭기와 마찬가지로 고주파 응답특성을 확인하기 위해 외부에 캐패시터를 단다. 고주파 실험만을 목적으로 하는 경우에는 세라믹 캐패시터만 달아도 된다. 실험을 통해 알아본 3dB 주파수를 통해 주파수의 특징을 알 수 있는데 CE증폭기의 경우에 그 증폭의 크기는 크지만 주파수 대역이 작고 emitter follower의 경우는 전압의 증폭은 기대 할 수 없지만 그 주파수 대역폭이 매우 크다는 서로 다른 특징을 가지고 있다.ImplementationE1.1 DC상태실험에 주어진 회로와 같이 브레드 보드를 통해 회로를 꾸며 주고 DC상태의 각 노드의 전압 값을 측정하기 위해 입력신호를 접지시킨다. 그 후 디지털 멀티미터를 통해 노드 S, B, E, C의 DC 전압 값을 측 신호원의 주파수를 증가시키며 노드 C의 전압이 0.707배 떨어지는 주파수를 구한다. 그 다음 Rc에 병렬로 10kΩ을 연결하고 3dB 주파수를 구한다.E4,1 중간대역 동작CB 증폭기의 고주파 주파수 응답을 구하기 위해 피드백 bias와 직접 입력 coupling이 있도록 회로를 꾸며준다. 입력단에 3Vpp, 10kHz의 사인파를 노드 I에 인가 시킨 후 노드 S, B, E, C에서의 peak to peak 전압을 오실로스코프를 통해 측정한다. 파형발생기를 이용하여 주파수를 낮춰가면서 3dB 주파수를 구한다.E4.2 고주파 응답BJT의 베이스-에미터간에 1000㎊, 베이스-컬렉터 간에 100㎊를 달아 트랜지스터의 고주파 특성을 낮춰 주파수 특성을 실험한다. 노드 I에 4Vpp, 10kHz의 사인파를 인가하여 노드 S, C 간의 전압이득이 3dB 떨어지는 주파수의 값을 오실로스코프로 관찰하며 구한다. B-E와 B-C사이의 커패시터의 값을 차례로 2배로 늘리며 3dB 주파수의 변화를 측정하며가장 큰 영향을 주는 커패시터를 확인한 후 두 개의 커패시터 값을 모두 두 배로 늘린 후의 3dB 주파수와 기존의 3dB 주파수를 비교해 본다.E5.1 중간대역 이득과 상위 Cutoff입력 단에 1Vpp, 10kHz의 입력을 가한 후 노드 S, B, E, D의 전압을 오실로스코프를 통해 측정한다. 역시 주파수를 증가시켜 가며 출력 전압이 0.707배 되는 3dB 주파수를 구하고 커패시터의 용량을 하나씩 2배로 키우면서 3dB 주파수에 영향을 많이 주는 커패시터를 확인하고 큰 쪽의 커패시터의 용량을 두 배로 하고 RL의 저항 값을 반으로 줄인 후 3dB의 주파수를 구한다.ResultE1.1 DC상태VV㏀ ㏀ ,㏀ ,·㏀㏀Ω-0.3mV-0.0393V-0.666V5.721V0.93mA0.93mA3.91㎂1238- 분석 :로부터 구한와 직접와를 이용해 구한에 차이가 발생하고, 두번째 방법은 오차가 생기는데 그 이유를 설명해 보시오.위에서 직접 측정한 전압 값을 통해 바이어스 전류 정값의 타당성을 검증할 수 있다. 노드 B의 전압은 매우 작기 때문에 측정에 오차가 클 수 있으나, 측정값의 오차가 큰 경우에는 바이어스 전류로부터 계산한값을 이용하여 계산한 값을 사용할 수 있다. 전압이득와를 구하고 노드 B에서 본 입력저항을 구하시오.위의 실험에서의 전압 값이 나타나지만 형태가 불완전한 정현파의 값으로 측정되는 걸 보아 거의 0이라는 것을 알 수가 있다.의 경우에는 그 값이 19.5mVpp가 나왔으므로 입력이 1Vpp인거에 비해서 약 1/50정도의 값이 측정되는데 전압분배에 의한 효과로 미루어 보면 1/100이 나와야 하는데 실제 측정해보니 차이가 조금 있었다. 전압이득가 되고,가 된다. 그러나 위의 실험에서 측정했을 때의 성분이 제대로 측정되지 않았다. 원인이라고 생각되는 것은 앞의 capaciotr에 모든 전하가 측적되었다라고 뿐이 생각할 수 없었다. 실제의 경우라면 위의의 값과 거의 비슷하게 측정되었을 거라고 생각했다. 그리고 입력 저항을 구해보면,이 된다는 것을 알 수가 있다.E2.1 전반적인 주파수 응답 특성a) 주파수를 낮춰가며 노드 S,D의 전압을 측정하여, 전압이득이배로 떨어지는 저주파 3dB주파수을구하시오.주파수가 25Hz에서Vpp 값을 가진다.= 25HzE3.1 기본 AC 측정a) 오실로스코프의 측정 모드를 ac 결합으로 설정하고, S,B,C 노드의 최대 값을 측정하여 전압이득를 구하시오. 노드 B에서 들여다 본 입력 저항을 구하시오.//46.8mVpp26mVpp4.92Vpp105.8V/V188.6V/V,가 됩니다.노드 B에서 들여다 본 입력 저항은이 됩니다.b) 입력 신호원의 주파수를 증가시키며, 노드 C의 전압이 3dB(0.707배) 떨어지는 주파수을 구하시오.c)에 병렬로을 달고 다시 3dB 주파수를 구하시오.10kHz에서 Vc = 1.18V에서 0.707배인 Vc = 840mV가 되었을 때의를 가진다.-분석 : 위의 실험 결과를 기초로 BJT의 특성을 분석한다.a) 노드 S, B, C에서의 전압으로부터와를 구하시오.
    공학/기술| 2010.05.27| 13페이지| 1,000원| 조회(332)
    미리보기
전체보기
받은후기 4
4개 리뷰 평점
  • A+최고예요
    3
  • A좋아요
    1
  • B괜찮아요
    0
  • C아쉬워요
    0
  • D별로예요
    0
전체보기
해캠 AI 챗봇과 대화하기
챗봇으로 간편하게 상담해보세요.
2026년 05월 02일 토요일
AI 챗봇
안녕하세요. 해피캠퍼스 AI 챗봇입니다. 무엇이 궁금하신가요?
6:08 오전
문서 초안을 생성해주는 EasyAI
안녕하세요 해피캠퍼스의 20년의 운영 노하우를 이용하여 당신만의 초안을 만들어주는 EasyAI 입니다.
저는 아래와 같이 작업을 도와드립니다.
- 주제만 입력하면 AI가 방대한 정보를 재가공하여, 최적의 목차와 내용을 자동으로 만들어 드립니다.
- 장문의 콘텐츠를 쉽고 빠르게 작성해 드립니다.
- 스토어에서 무료 이용권를 계정별로 1회 발급 받을 수 있습니다. 지금 바로 체험해 보세요!
이런 주제들을 입력해 보세요.
- 유아에게 적합한 문학작품의 기준과 특성
- 한국인의 가치관 중에서 정신적 가치관을 이루는 것들을 문화적 문법으로 정리하고, 현대한국사회에서 일어나는 사건과 사고를 비교하여 자신의 의견으로 기술하세요
- 작별인사 독후감