디지털회로 설계 및 언어 verilog practice (판매용)
본 자료는 4페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
해당 자료는 4페이지 까지만 미리보기를 제공합니다.
4페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

디지털회로 설계 및 언어 verilog practice (판매용)에 대한 보고서 자료입니다.

목차

1. Up counter
2. Down counter
3. Up-Down counter
4. Moore FSM "1011" sequence detector
5. Falling Edge Detector

본문내용

디지털회로설계 및 언어
Verilog practice
2000000000 000
Practice 1: Up counter
Practice 2: Down counter
Practice 3: Up-down counter
Practice 4: Moore FSM “1011” Sequence Detector
Prob.1: Falling Edge Detector
Falling_Edge_Detector.v source code
module Falling_Edge_Detector(sequence_in,clock,reset,detector_out);
input clock; // clock을 input으로 갖으며
input reset; // reset input을 갖는다
input sequence_in; // binary input을 갖는다
output reg detector_out; // falling edge detector에 대한 output 지정
parameter
ZfZ=2\'b00, // \"Zero from Zero\"
OfZ=2\'b01, // \"One from Zero\"
ZfO=2\'b10, // \"Zero from One\"
OfO=2\'b11; // \"One from One\" 상태 지정
reg [1:0] current_state, next_state; // current state and next state
always @(posedge clock, posedge reset) // Sequential memory of the Moore FSM으로
begin
if(reset==1)
current_state <= ZfZ; // reset이 1일경우, FSM의 상태를 \"ZfZ\"으로 reset한다
else
current_state <= next_state; // 아닐경우 next state
end
always @(*) //Moore FSM의 next state를 결정하기위한 논리
begin
case(current_state)
ZfZ:begin
if(sequence_in==1)
next_state = OfZ;
else
next_state = ZfZ;
end
OfZ:begin
if(sequence_in==1)
next_state = OfO;
else
next_state = ZfO;
end
ZfO:begin
if(sequence_in==1)
next_state = OfZ;
else
next_state = ZfZ;
end
OfO:begin
if(sequence_in==1)
next_state = OfO;
else
next_state = ZfO;
end
default: next_state = ZfZ;
endcase
end
always @(*) // Moore FSM의 output을 결정하기 위한 논리로 output은 current state에 의존한다.
begin
case(current_state)
ZfZ: detector_out = 0;
OfZ: detector_out = 0;
ZfO: detector_out = 1;
OfO: detector_out = 0;
default: detector_out =0;
endcase
end
endmodule
tb_Faliing_Edge_Detector source code
`timescale 1ns/1ps
module tb_Faliing_Edge_Detector;
reg seq_input;
reg clk;
reg rst; // input 값들과
wire det_output; // Output 값을 갖으며
Falling_Edge_Detector FED(.sequence_in(seq_input),.clock(clk),.reset(rst),.detector_out(det_output));
//instansiate한 모듈의 signal들을 test banch의 siganl과 연결한다.
initial begin
clk=0;
forever #5 clk = ~clk; // 5지연 이후 clk를 반전한다.
end
initial begin
seq_input =0; rst = 1;//
#30; rst = 0;
#20; seq_input = 1; //t=50ns까지의 Sequence 0
#10; seq_input = 0; //t=60ns까지의 Sequence 10
#10; seq_input = 1; //t=70ns까지의 Sequence 010
#20; seq_input = 0; //t=90ns까지의 Sequence 11010
#10; seq_input = 1; //t=100ns까지의 Sequence 011010
#30; seq_input = 0; //t=130ns까지의 Sequence 111011010
#10; seq_input = 1; //t=140ns까지의 Sequence 0111011010
#40; seq_input = 0; //t=180ns까지의 Sequence 11110111011010
#20; $finish; //t=200ns까지의 Sequence 0011110111011010
end
endmodule
Prob.2
module count(clk,Ld8,Enable,S5,Q);
input clk,Ld8,Enable;
output reg S5;
output reg[3:0] Q;
always @(posedge clock, posedge reset)
begin
process(clk)
begin
if clk\'event and clk = \'1\' then
if Ld8 = \'1\' then Q <= \"1000\";
else if Enable = \'1\' then
if Q = \"0011\" then Q <= \"1000\";
else Q <= Q-1; end if;
end if;
end if;
end process;
S5 <= \'1\' when Q <= \"0101\" else \'0\';
end counter;
endmodule
  • 가격5,000
  • 페이지수12페이지
  • 등록일2023.03.23
  • 저작시기2023.03
  • 파일형식한글(hwp)
  • 자료번호#1201431
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니