일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- 코드트리
- 토끼와 경주
- 이진탐색
- 구현
- 나무박멸
- 슈퍼컴퓨터클러스터
- ros
- ICER
- 조합
- 왕실의기사대결
- 코드트리빵
- 시뮬레이션
- ARM
- 백준
- 수영대회결승전
- DP
- BFS
- 삼성기출
- 포탑부수기
- 소프티어
- dfs
- 3Dreconstruction
- 루돌프의반란
- 마법의숲탐색
- 마이크로프로세서
- 순서대로방문하기
- Calibration
- 싸움땅
- DenseDepth
- ISER
- Today
- Total
목록EE 학부과목/verilog (9)
from palette import colorful_colors
counter.v 파일 `timescale 1ns/1ns module counter (rst, on, clk, count, in, out0609); input rst, on, clk; output reg [3:0] count; reg [6:0]tmp; input in; output reg [6:0] out0609; always@(posedge clk) begin if(rst == 0) begin count = 0; out0609 = 0; end else if (on) begin//on이 1일때 가동 if(count == 6) begin count
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
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..
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..
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중 연..
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..
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;..
좀 더 자세한 설명이 필요하다면 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..