전체 글 (34) 썸네일형 리스트형 [Verilog] JK flipflop 이번에 설계 할 회로는 조합회로가 아닌 순차회로의 기본이 되는 flipflop 설계를 할 것이다. flipflop은 정보를 저장하는 기능을 하여 cpu에서 데이터값을 저장하는 레지스터가 flipflop으로 이루어져 있다. flipflop의 기본적인 특징은 clock pulse의 edge에서만 저장된 데이터가 변하기 때문에 clock pulse가 1일때나 0일때는 값이 변하지 않고 원래 갖고 있던 값을 그대로 갖고 있는다. clock pulse의 edge는 다음 그림과 같이 1->0으로 되는 부분을 negative edge라 부르고 0->1인 부분을 positive edge라고 부른다. 이번 설계 에서는 positive edge부분에서 데이터 값을 저장하는 jk flipflop을 설계 해보겠다. jk fl.. [Verilog] 8bit 가산기 이번에는 1bit의 덧셈이 아닌 8bit를 더해주는 회로인 8bit 가산기를 설계 해보겠다. 8비트 가산기는 다음 그림과 같이 8개의 전가산기로 이루어져있다. 즉 1bit 덧셈을 해주는 전가산기에서 나온 carry 신호가 다음 전가산기로 넘어가서 입력값으로 들어가는 기능을 한다. 여기서 중요한것은 처음 carry0는 0이 된다. 이번 8bit 가산기 또한 전가산기의 모듈을 이용하여 설계할 것이다. 다음은 전가산기 모듈이다. 8bit 전가산기를 설계 할 때 입력 변수도 8bit로 설계 해야한다. verilog에서 1bit이상의 bit를 표현할 때는 '[a:0] variation' 으로 선언한다 이때 variation은 a+1의 비트를 갖는다. variation[0]은 a+1비트중 첫번째 비트를 표현하고 v.. [Verilog] 전가산기 이번에는 전가산기를 설계 해보겠다. 전가산기는 반가산기 두개가 합쳐진 형태로 반가산기와의 차이점은 두 비트와 carry비트까지 더해 진다는 것이다. 전가산기는 다음과 같은 형태로 그려지며 두개의 반가산기와 or게이트로 이루어져 있다. 진리표는 다음과 같이 그려지며 verilog로 구현할 때 반가산기 두개 module과 or게이트를 이용해서 구현할 수 있다. 전가산기를 설계 하기 앞서 반가산기를 게이트 레벨로 설계 하였다. 이 반가산기 모듈을 만들어 전가산기에서 모듈을 연결 시키도록 한다. 전가산기를 설계한 모습이다. verilog로 디지털 회로를 설계 하면 컴퓨터는 소스코드로 synthesis 과정을 거쳐 gate-level-netlist를 만든다. 이 gate-level-netlists는 디지털 회로를.. [Verilog] 멀티플렉서 디지털 논리회로를 verilog로 설계를 할 때 처음으로 생각해야 할 부분은 바로 이 회로가 순차회로인지 조합회로인지 구별해야 한다. 어떤 회로인지 결정이 되면 어떤 종류의 테이블이 만들어질지 결정 되기 때문이다. 만약 순차회로면 여기표를 만들어야 하고 조합회로면 진리표를 만들어야 한다. 둘 테이블이 동일하게 input값 output값들을 쓰고 하지만 여기표는 현재 상태와 다음상태를 써야 한다는 차이가 있다. 다음에 플립플롭을 설계 할때 확인해 보도록 하겠다. 오늘 설계할 회로는 디지털 논리회로를 초반에 배우면 나오는 멀티플렉서다. 이름은 되게 거창하지만 하는 역할은 input이 들어오면 select 신호에 의해 어떤 input값을 output값으로 내보내야 될지 결정하는 쉽게 생각해서 교차레일 같은 역.. [ARM] exploit RTL Chaining 이번에는 RTL 기법으로 여러 함수를 호출하여 마치 사슬에 사슬을 물듯이 이어지는 exploit에 대해 공부 해보겠다. 여러 블로그나 자료에 나온 ARM exploit에 관한 설명이 나는 이해가 가지 않아 직접 내 생각을 정리 했다. 생초보의 글이니 지나가다 이 글을 발견하면 가볍게 읽기 바랍니다. 다음과 같은 코드로 공부 했다. 물론 RTL이니 ASLR은 없다고 가정한다.(/proc/sys/kernel/randomize_va_space 에 0을 저장한다.) 엄청 단순한 코드다. 여기서 RTL chaining은 함수를 연계하는 것이다. 여기서 read()함수와 system()함수 그리고 exit()함수를 연계 하고자 한다. 필요한 정보는 각 (함수들의 주소)와 ("/bin/sh"문자열을 저장 시켜줄 영역.. [전자회로] 2N2222a [ARM] Hello World!_Part 2 저번에는 syscall을 이용하여 .s파일을 만들고 실행파일로 변경하여 Hello World! 문자열을 출력하는 어셈블리 소스 코드를 작성 하였다. 이번에는 libc functions을 이용하여 같은 동작을 하는 프로그램을 작성할 것이다. stmfd sp!, {lr} //lr 값을 저장한다. ldr r0, =string //첫번째 파라미터를 r0에 저장하므로 string의 주소를 r0에 저장한다. bl printf //bl명령어로 printf 함수를 호출한다. ldmfd sp!, {pc} //pc를 복구한다. 다음과 같이 syscall과는 차이가 있다. 가장 큰 차이는 main함수가 있고 bl 명령어를 통해 함수를 호출한다. info proc mappings 명령어를 통해 libc shared libra.. PLL 이전 1 2 3 4 5 다음