1. 12.26 

14:00~18:00

교수님과 면담,건강실비 / 연구자 등록번호 발급 / 개인정보 동의 서 등 필요한 서류 작성

Window10 , Slack 등 필요한 프로그램 환경 구축


2. 12.28

10:00~18:00

파이썬 개발환경 프로그램 구축 , [ CUBe 4차 ] Pthon 강의 - 알고리즘과 절차지향프로그램 

self study : Pthon 기본 개념, 단축키, 함수 

교수님과 면담. Project 받음


3. 12.30 (1-bit)

10:00~17:00

Vivado Verilog 개발환경 설정 , Orcad 다운로드

Verilog 설계

 

3.1. 신호가 온것을 확인

 
특정 신호를 받았을 때 특정 신호를 받은 이후 계속 1을 출력하도록 함.
이전 신호가 1이면 계속 1을 출력해야하기에 FF를 사용하였다. 즉 q가 결정되는 순강이 1이고 맨처음 D값은 q의 값이 지정되어 있지 않기 때문에 초기에만 rst'=0으로 설정해놓았다.
//--------------------D FF------------------

module Dff(q,din,clk,rst );
input din,clk,rst;
output reg q;
wire D;

or(D,din,q);
always @(posedge clk or negedge rst)
begin
if(rst==0)
q<=0;
else
q<=D;
end
endmodule
//-------------------TESTBENCH--------------------------
module testbench();
wire Q;
reg inA;
reg clk,rst;
Dff dff(Q,inA,clk,rst);

always begin
clk=~clk;
#100;
end

initial begin inA=0; clk=0; rst=0;
#100 rst=1;
#100 inA=1; 
#100 
#100 inA=1;
#100 
#100 inA=0;


end
endmodule

rst'=0일 때에는 결과값 Q가 0으로 출력된다. 위처럼 초기에 rst'=0으로 설정을 해놓지 않을 경우 q가 결정 될 때까지 그 값을 알 수가 없다. 따라서 초반에 q를 설정하기 위해 rst'=0으로 설정하였다. 그리고 다음 clock에서 rst'=1로 설정해야 output이 input의 영향을 받으므로 rst'=1로 설정해야한다.

따라서 위와 같이 input이 변했을대 다음 clock에서 output(Q)가 쭉 1이 되는 것을 확인 할 수 있다.

 

3.2. 신호 right shift

// ----------------DFF---------------------
module D_FF(q,din,clk,rst );
input din,clk,rst;
output reg q;
always @(posedge clk or negedge rst)

begin
if(rst==0)
q<=0;
else
q<=din;
end
endmodule
//------------TESTBENCH--------------------
module testbench();
wire Q;
wire out1,out2,out3;
reg inA;
reg clk,rst;
Dff dff(Q,inA,clk,rst);
D_FF dff1(out1,inA,clk,rst);
D_FF dff2(out2,out1,clk,rst);
D_FF dff3(out3,out2,clk,rst);
always begin
clk=~clk;
#100;
end

initial begin inA=0; clk=0; rst=0;
#100 rst=1;inA=1;
#100 inA=0;
#100 
#100
#100 
#100 inA=0;

DFF 세개를 만들어 DFF1의 output이 DFF2의 input에 연결 하면 위의 그림과 같이 rightShift 하는 것을 볼 수 있다.

 

 

복사했습니다!