일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 삼성기출
- dfs
- BFS
- 싸움땅
- 마법의숲탐색
- 소프티어
- ISER
- 마이크로프로세서
- 슈퍼컴퓨터클러스터
- 백준
- 구현
- 포탑부수기
- ARM
- 순서대로방문하기
- 시뮬레이션
- 토끼와 경주
- ICER
- 수영대회결승전
- 코드트리
- 조합
- 3Dreconstruction
- 이진탐색
- 나무박멸
- DenseDepth
- DP
- 루돌프의반란
- ros
- 왕실의기사대결
- 코드트리빵
- Calibration
- Today
- Total
목록전체 글 (100)
from palette import colorful_colors
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bDR9iU/btr3gL7O3fC/RQiKgsBJbz871tF46G4Xvk/img.jpg)
ff.v 파일 //positive edge FF의 예시 module flipflop1 (d, clk, q); input d, clk; output reg q; always @ (posedge clk)//클럭이 rise edge일때 동작 begin//always@(negedge clk)으로 적는다면 falling edge일때 동작 q
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/blK5Ol/btr3uEs8q0p/PT4aBRSwKh4jiDfPTPo4FK/img.jpg)
add, sub, mux, div, mux41 모듈을 각각 구현하고 최종적으로 alu16 모듈에 합친 파일. add, sub, mux, div, mix41이 alu16의 하위 모듈에 해당한다. module add(out, a, b);//adder 모듈 input [15:0] a, b; output [15:0] out; assign out = a + b; endmodule module sub(out, a, b); //subtractor 모듈 input [15:0] a, b; output [15:0] out; assign out = a - b; endmodule module mul(out, a, b);//multiplyer 모듈 input [15:0] a, b; output [15:0] out; assign..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dbx7ZH/btr3iJhcR1l/1txiNSmqwPTeznTBW7G1k0/img.jpg)
dmux14.v 파일 module dmux14(y0, y1, y2, y3, in, sel); input [3:0] in; input [1:0] sel; output reg [3:0] y0, y1, y2, y3; always @(*) begin case(sel)//일반 모듈에서도 당연히 숫자 부여 가능. 2'b00 : begin y0 = in; y1 = 0; y2 = 0; y3 = 0; end//begin문으로 묶어주면 c언어에서 {}와 같은 역할!!!! 중요. 2'b01 : begin y0 = 0; y1 = in; y2 = 0; y3 = 0; end 2'b10 : begin y0 = 0; y1 = 0; y2 = in; y3 = 0; end 2'b11 : begin y0 = 0; y1 = 0; y2 = 0..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/phg7Q/btr3dTkDWzE/o565wM5PlK39kEGGn49uA1/img.jpg)
mux41.v 파일 (같은 역할을 하지만, 각기 다른 버전들로 mux들 4가지를 구현했다.) 참고: always문 안에 쓰이는 output변수는 reg여야한다.//1. case를 사용한 mux(가장 대표적) module mux41_1(y, a, b, c, d, sel); input [3:0] a, b, c, d;//4bit 입력 4개 선언 input [1:0]sel; //2bit select 선언 output reg [3:0]y; //4bit 출력 하나 선언 always @(*) begin//case로 mux4 to 1 구성 case(sel) 2'b00 : y = a; 2'b01 : y = b; 2'b10 : y = c; 2'b11 : y = d; endcase end endmodule //2. 3중 연..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dnVFrn/btr3eBRwpop/pcawTPHugnhEkLu1qI4ANk/img.jpg)
fa.v 파일 (full adder) module fa(s, cout, a, b, cin); //full adder 모듈 input a, b, cin; output s, cout; assign {cout, s} = a + b + cin; //시스템 내의 full adder 계산 endmodule /* 다르게 짜는 방법 1 module fa(s, cout, a, b, cin); input a, b, cin; output s, cout; wire w1, w2, w3; xor u1 (w1, a, b); and u2 (w2, a, b); xor u3 (s, w1, cin); and u4 (w3, w1, cin); or u5 (cout, w3, w2); endmodule */ /* 다르게 짜는 방법 2 modul..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cZxrHy/btr3dDowpW8/9nfLXksoduFALhj1JfojPk/img.jpg)
nand.vmodule NANDgate(in1, in2, out1); input in1; input in2; output out1; assign out1 = ~(in1 & in2); endmodule nand_tb.v`timescale 1ns/1ns module NANDgate_tb(); reg a; reg b; wire out1; NANDgate u1 (a, b,out1); initial begin a = 0 ; b = 0 ; #100 $finish; end always begin #5 a = ~a; end always begin #10 b = ~b; end /* 위 always문 이용 대신 initial문 안에 a = 0; b = 0 #5; a = 1; b = 0 #5; a = 0; b = 1 #5;..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/xmcQi/btr3iJIhtuG/fZ4Py5adlk3T85QRxkeC6k/img.jpg)
좀 더 자세한 설명이 필요하다면 https://colorful-palette.tistory.com/24 참고! inv.v파일 //인버터 모듈 module inv(a,z); input a; output z; assign z = ~a; endmodule //인버터를 이용한 버퍼 모듈 module buffer1(a, z) ; input a; output z; inv u1(a, b); inv u2(b, z); endmodule inv_tb.v 파일 `timescale 1ns/1ns module buffuer_tb(); reg a; wire z; buffer u1(a,z); initial begin a = 0; #100 $finish; end always begin #1 a = ~a; end initial beg..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cRF19I/btr3dDB2Jh7/2rrvkkzpa1Px7HaMxRizRk/img.jpg)
(이 카테고리는 경북대학교 ㅅㄷㄱ교수님의 논리회로설계 수업을 참고해 만들었습니다) 편집기: notepad ++ 사용, verilog: 이카루스 verilog란? 전자공학부 2학년 이상 학생이라면 논리회로 수업시간에서 and, or, not 등등 게이트로 MUX등을 구현해보고 조합 논리회로, 순차 논리회로 등 여러 디지털 회로 내용을 배웠을 것이다. 전자공학 관점에서 시스템을 바라볼때, 제일 물리학에 가까운 단에서 우리와 가까운 단으로 바라본다면 트랜지스터 단계 - 논리회로 - 마이크로프로세서(칩) - 보드 단계(칩들의 결합) - 시스템 단계(c 등 프로그래밍) 로 볼 수 있다. verilog는 이러한 논리회로 단에서의 하드웨어 디자인 설계 (CAD) 툴이라고 볼 수 있다. 논리회로 단계는 RTL(regi..