전체 글 (34) 썸네일형 리스트형 [DIR 550a] UART 부팅 [ARM] ROPlevel1 ARM ROP를 더 연습해보고 싶어서 마땅한 코드가 없을까 하고 고민하는 과정에서 어느 github를 발견했다. https://github.com/Billy-Ellis/Exploit-Challenges 이 링크에서는 MarchO 버전의 컴파일된 코드로 ROP를 단계별로 수행하는 소스코드들의 모음집이 있다. 다행히도 소스코드가 있어 따로 라즈베리파이 ARMv7의 아키텍쳐로 따로 컴파일을 해주었다. ROP를 해결하는 방법을 단계별로 풀어나가볼 것이다. 일단 첫번째 코드는 다음과 같다. #include #include #include #include char string[] = "date"; void change(){ strcpy(string,"ls"); printf("string changed.\n"); }.. [Verilog] FSM(유한 상태 머신)_2 이번에는 두번째 FSM을 설계 해보자. 첫번째 FSM과는 별다른 차이가 없지만 연습을 더 해보았다. bypass==1일때 상태가 ST1에서 ST3로 바뀌는 상황이다. 이때는 bypass를 clk와 동기화되도록 하였다. 동기화가 되면 clk가 변하기 전까지 bypass의 값을 바꿔도 상태는 변하지 않을 것이다. 다음과 같이 설계를 하고 testbench의 딜레이를 바꿔보았다. 130ns에서부터 ST1의 상태가 ST3의 상태로 bypass가 된다. 하지만 delay를 바꾸면 어떻게 될까 122ns에서 bypass가 0으로 입력되었지만 state는 ST3으로 그대로 bypass가 되었다. 이는 bypass가 clk에 동기화 돼서 다음 사이클이 될 때까지 영향을 안받는 것이다. 비동기식 방식으로 설계를 하고 싶.. [Verilog] FSM(유한 상태 머신) 모든 시스템에서는 제어부와 실행부로 나뉜다. 제어부는 명령을 내리는 부서로 실행부로 하여금 특정한 행동을 하도록 신호를 보낸다. 신호를 받은 실행부는 신호에 따라 해당된 일을 수행한다. 사람으로 따지면 제어부는 사람의 '뇌'이고 실행부는 사람의 '몸'으로 그 기능을 나눌 수 있다. 시스템에서는 제어부가 내린 신호에 따라 실행부의 '상태'가 변하면서 원하는 행동을 한다. 이때 상태가 변함에 따라 실행부에서 나오는 외부 신호가 달라져야 한다. 간단히 그림으로 표현하면 다음과 같이 상태가 변해야 한다. 내가 어떤 버튼을 눌렀을 때는 S0의 상태가 시작되고 그에 따른 버튼들을 누르면 상태가 S1,S2로 변하면서 그 상태에 따른 결과값이 출력 되는 것이다. Verilog 설계시 FSM하면 가장 먼저 떠오르는 예제.. [Verilog] 4-bit fulladder 이번에는 4-bit fulladder를 설계할 것이다. 그전에 4-bit fulladder를 1-bit fulladder로 하위 모듈을 만들어서 연결해줄 것이다. 1-bit fulladder의 모습으로 behavior-level로 설계를 하였다. 사진과 같이 입력값 c,d를 4비트로 선언하여 한 비트씩 1-bit fulladder로 덧셈을 해주었다. testbench에서는 마지막에 carry가 전달되는 것을 확인하기 위해 MSB에서 carry가 발생하게 하였다. simulation의 결과로 마지막에 carry가 발생된 것이 확인 되었다. Schematic이 1-bit fulladder 4개의 결합으로 원하는 결과가 나왔다. Schematic을 잘 따라가다 보면 이전 1-bit fulladder의 carr.. [Verilog] 인코더, 디코더 인코더는 데이터를 암호화 하는 역할을 하는 회로를 말한다. 여기서 암호화란 2^n의 데이터가 들어오면 n개의 출력선으로 나가는 역할을 한다. 4-to-2인코더는 4개의 입력선이 2개의 출력선으로 압축 시키는 일을 한다. 이와는 반대로 n개의 입력선이 다시 2^n개의 출력선으로 나오는 것을 디코더 라고 한다. 흔히 디코더는 암호를 복호화 시키는 일을 하는 회로를 말한다. 흔히 회로 이름에서 앞에 'de' 글씨가 붙으면 입력선보다 출력선이 많다. 인코더의 모습이다. 다음과 같은 상태표를 가지고 부울대수로 표현하면 이 부울대수를 가지고 verilog 설계를 해보겠다. 처음 설계 코드는 assign문으로 조합회로를 설계할 때 가장 흔히 사용하는 구문을 사용하였다. 첫 코드의 시뮬레이션 여기서 output에 wi.. [회로이론] RC회로 High-pass filter Low-pass filter [Verilog] D flipflop 저번에 이어 이번에는 D flipflop을 설계 할 것이다. D flipflop은 JK flipflop보다 훨씬 간단한 형태를 띄고 있다. D flipflop은 D의 값에 따라 Q의 값이 달라진다. 즉, D=1이면 Q도 1이되고 D=0이면 Q도 0이 된다. D의 값에 따라 Q의 값이 따라온다. flipflop 한개는 1bit의 데이터만 저장할 수 있다. 8bit의 데이터를 저장하고 싶으면 8개의 flipflop가 필요하다. D flipflop 또한 순차회로로 상태표가 필요하다. 행위 수준으로 모델링한 D flipflop의 모습으로 Q의 값이 D의 값을 따라간다. 여기서 중요한 점은 clk와 같이 동기화 되어 데이터가 저장돼 D의 값이 들어간 후 딜레이가 생겨 Q의 값으로 나온다는 것이다. 시뮬레이션의 결.. 이전 1 2 3 4 5 다음