Kraklog

[Verilog_LAB1] Part4 본문

[Harman] 하만 반도체 설계/CPU설계

[Verilog_LAB1] Part4

Krakens 2023. 12. 18. 16:04
728x90

프로그램 : Quaturs Prime lite edition 18.1

사용문법 : Verilog 2001

보드 : DE1-SOC

 

part4의 목표는 7-Segment 제어이다.

c1c0의 값에 따라서 segment에 글씨를 표현하는 것인데, DE1-SoC 보드이기 때문에 기본적으로 dE1을 표현하고, 추가적인 사항으로 S의 값도 추가하였다.

 

`define BUS_SIZE 2
`define SL_SIZE 10
//`define USE_GNE


module part4(SW,LEDR,seg_a,seg_b,seg_c,seg_d,seg_e,seg_f,seg_g);

	input  [`SL_SIZE-1:0] SW;
	output [`SL_SIZE-1:0] LEDR;
  output  seg_a;
	output  seg_b;
	output  seg_c;
	output  seg_d;
	output  seg_e;
	output  seg_f;
	output  seg_g;

  wire  [`BUS_SIZE-1:0] U;
  wire  [`BUS_SIZE-1:0] V;
  wire  [`BUS_SIZE-1:0] W;
  wire  [`BUS_SIZE-1:0] X;
  wire  [`BUS_SIZE-1:0] m;
  wire s1,s0;

  assign s1 = SW[9];
  assign s0 = SW[8];
  assign U=SW[7:6];
  assign V=SW[5:4];
  assign W=SW[3:2];
  assign X=SW[1:0];
  assign LEDR [1:0] = m;
  assign LEDR [`SL_SIZE-1:2] = 0;
 

`ifdef USE_GNE

genvar i;

generate
	for (i=0; i<2; i=i+1)begin : MUX_2x1
	mux_4x1 uMux_4x1(
  .U(U[i]),
  .V(V[i]),
  .W(W[i]),
  .X(X[i]),
  .s0(s0),
  .s1(s1),
  .m(m[i])
);
  end
  endgenerate
  `else
  	mux_4x1 uMux_4x1_0(
  .U(U[0]),
  .V(V[0]),
  .W(W[0]),
  .X(X[0]),
  .m(m[0]),
  .s0(s0),
  .s1(s1)
);

  	mux_4x1 uMux_4x1_1(
  .U(U[1]),
  .V(V[1]),
  .W(W[1]),
  .X(X[1]),
  .m(m[1]),
  .s0(s0),
  .s1(s1)
);



`endif
 /*	always @ (*)
	if (!s1)
		LEDR = m1;
	else
		LEDR = m2;*/

fnd uFnd(
.inp	(m    ),
.seg_a(seg_a),
.seg_b(seg_b),
.seg_c(seg_c),
.seg_d(seg_d),
.seg_e(seg_e),
.seg_f(seg_f),
.seg_g(seg_g)
);

endmodule

#2001 버전이 아닌 올드타입을 따랐는데, 지시서에 적혀있어서 이용했음
mux4x4는 이전 발행글에서나온 mux를 이용하였다. (2023.12.18 - [[Harman] 하만 반도체 설계/CPU설계] - [Verilog_LAB1] Part3)

 

module fnd (
	input			[1:0] inp		,
	output reg		seg_a		, 
	output reg		seg_b		,
	output reg		seg_c		,
	output reg		seg_d		,
	output reg		seg_e		,
	output reg		seg_f		,
	output reg		seg_g		  
	
);
	always @ (*) begin
		case (inp)
			2'b00	:	{seg_a, seg_b, seg_c, seg_d, seg_e, seg_f, seg_g } = ~7'b011_1101;
			2'b01	:	{seg_a, seg_b, seg_c, seg_d, seg_e, seg_f, seg_g } = ~7'b100_1111;
			2'b10	:	{seg_a, seg_b, seg_c, seg_d, seg_e, seg_f, seg_g } = ~7'b011_0000;
			2'b11	:	{seg_a, seg_b, seg_c, seg_d, seg_e, seg_f, seg_g } = ~7'b101_1011;
			default : {seg_a, seg_b, seg_c, seg_d, seg_e, seg_f, seg_g } = ~7'b111_1110;
		endcase
	end
endmodule

fnd 모듈

 

728x90

'[Harman] 하만 반도체 설계 > CPU설계' 카테고리의 다른 글

[Verilog_LAB2] Part1  (0) 2023.12.19
[Verilog_LAB1] Part5  (0) 2023.12.18
[Verilog_LAB1] Part3  (1) 2023.12.18
[Verilog_LAB1] Part2  (1) 2023.12.18
[Verilog_LAB1] Part1  (0) 2023.12.18