Harman 세미콘 아카데미/SoC를 위한 Peripheral 설계 14

2024.12.04 [SoC를 위한 Peripheral 설계]12 - cpu의 구조와 동작원리6(Tcl Console 확인, Basys3에서 결과 확인)

2024.12.04 수업날Test Bench Processor의 시뮬레이션을 실행할때, 하나하나 숫자를 대입하면서 시뮬레이션을 실행하기에는 복잡하니까,for문을 이용해서 시뮬레이션을 실행해보고 결과를 살펴본다.2중 for문을 사용한 Test Bench Processor codemodule tb_Processor();            reg clk, reset_p;      reg [3:0] key_value;      reg key_valid;            wire [3:0] kout;      wire [7:0] outreg_data;            Processor DUT(            clk, reset_p,            key_value,            key_..

2024.12.3 [SoC를 위한 Peripheral 설계]11 - cpu의 구조와 동작원리5(ROM, Processor simulation)

2024.12.3 수업날 이번에는 저번시간에 이어서 ROM을 만들어보고, Processor에 합쳐서 시뮬레이션으로 결과를 확인해본다. 복습을 해보자면ALU: 연산기ACC: 누산기(누적해서 계산한다)PC: 1씩 증가하거나 점프하는 카운터MAR: ROM으로부터 데이터를 AdressMDR: ROM으로부터 해당되는 데이터를 받는다IR: 명령 레지스터     넉넉하게 256byte로 준 것이다.  CE(Chip Enable)을 체크표시한다.  다음으로 아래의 .coe 파일을 다운받는다. .coe 파일 내용 중첫 번째 줄은 16진수라는 의미이다.두 번째 줄은 'cpu 4bit 계산기 프로그램'의 hex code를 차례대로 나열한 것이다.  그리고 아래의 Load COE File에서 다운받은 .coe 파일을 입력하..

2024.11.11 [SoC를 위한 Peripheral 설계]10 - cpu의 구조와 동작원리4(Control_Block instance 진행하기)

2024.11.11 수업날이번에는 저번에 만들었던 Control_Block에 대해서 마저 만들어본다.아래의 그림의 Control_Block을 만드는 것이다.  12 bit ring counter source code/////////////////////////////////////////////// 2024.11.11module ring_counter_clk12( input clk, reset_p, output reg [11:0] t); always @(posedge clk or posedge reset_p) begin if(reset_p) t = 12'b0000_0000_0000; else begin ..

2024.11.04 [SoC를 위한 Peripheral 설계]9 - cpu의 구조와 동작원리3(Program Counter, Processor)

2024.11.04 수업날PC의 최종 블록 다이어그램  Vivado 진행 순서  half_adder_N_bit/////////////////////////////////////////////////// 2024.11.04module half_adder_N_bit #(parameter N = 8)( input inc, input [N-1:0] load_data, output [N-1:0] sum); wire [N-1:0] carry_out; half_adder_dataflow ha0(.a(inc), .b(load_data[0]), .s(sum[0]), .c(carry_out[0])); genvar i; //genv..

2024.10.21 [SoC를 위한 Peripheral 설계]8 - cpu의 구조와 동작원리2 (Block_ALU_ACC, ALU_ACC_Test Bench)

2024.10.21 수업날저번시간에 만든 ALU와 ACC를 합쳐서 코드를 만들고, 이를 이용한 Test Bench를 만들어서 연산 결과가 잘 나타나는지 시뮬레이션으로 확인해본다.Block_ALU_ACC module Block_ALU_ACC( input clk, reset_p, acc_high_reset_p, input rd_en, acc_in_select, input [1:0] acc_high_select_in, acc_low_select, input [3:0] bus_data, input op_add, op_sub, op_mul, op_div, op_and, input [3:0] bus_reg_data, output zero_fl..

2024.10.14 [SoC를 위한 Peripheral 설계]7 - cpu의 구조와 동작원리1(ALU, ACC)

2024.10.14 수업날  ALU와 ACC의 구조 및 동작 원리  vivado 진행 순서새로운 project 만들어서 RTL project로 설정한 후, basys3 보드로 설정한다. Create File에서 ALU, ACC 생성 Add Files에서 아래와 같이 추가  ALU 소스코드////////////////////////////////////////////////////// 2024.10.14module ALU( input clk, reset_p, input op_add, op_sub, op_mul, op_div, op_and, input alu_lsb, /..

2024.9.12 [SoC를 위한 Peripheral 설계]6 - dht11_lcd(myip)

2024.9.12 수업날이번에는 온습도센서(dht11)에서 측정한 값을 LCD에 출력하는 IP를 만들어본다. vivado 진행 순서새로운 Block Diagram 생성 후,기본적인 Diagram까지 만들고 create and package new ip로 edit_myip를 진행한다.  Add Sources  slave 모듈 수정해야하는 부분  top 모듈 수정해야하는 부분  체크표시 확인 후 Re-Package IP 클릭  Block Diagram에 myip_dht11 추가  Generate Block Design에서 Global 선택 후 Generate 하기  Block Design에서 Sources의 .xdc에서 아래와 같이 수정  Mblaze_iic -> helloworld.c 소스코드(dht11_..

2024.9.12 [SoC를 위한 Peripheral 설계]5 - btn_intc(myip), iic(myip)

2024.9.12 수업날이번에는 버튼 인터럽트를 하는 IP를 만들어본다.Block Diagram에서 microblaze를 더블클릭하여 endable exception을 체크하여 인터럽트로 처리하도록 한다.  microblaze를 automation으로 할 때 아래와 같이 인터럽트 부분에 체크한다.  그러면 Diagram에서 인터럽트 컨트롤러가 추가된다.  axi_gpio에서 더블클릭하여 Enable Interrupt를 체크한다.  microblaze_0_xlconcat에서 number of ports를 2로 설정한다.  다음으로 Diagram에서 axi_gpio의 하나 남은 출력단과 microblaze_0_xlconcat를 수동으로 연결해준다.  다음으로 Diagram에서 axi_uartlite의 하나 ..