Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Linked List
- Edge Detector
- atmega 128a
- java
- KEYPAD
- LED
- Pspice
- test bench
- pwm
- ATMEGA128A
- uart 통신
- half adder
- soc 설계
- structural modeling
- Algorithm
- prescaling
- DHT11
- ring counter
- dataflow modeling
- hc-sr04
- D Flip Flop
- behavioral modeling
- FND
- verilog
- i2c 통신
- Recursion
- BASYS3
- vivado
- stop watch
- gpio
Archives
- Today
- Total
거북이처럼 천천히
Verilog RTL 설계(7월 16일 - 2, SRAM) 본문
1. SRAM
- 8bit PIPO Register를 1024개 엮어서 8192bit = 8kbit 크기를 갖는 레지스터를 생성해보자.
- 8bit PIPO Register 자료형을 갖는 배열을 생성하고, 배열의 사이즈를 1024개 갖도록 한다.
- 1024개의 레지스터 중에서 하나의 레지스터를 선택하기 위해서 10bit 크기를 갖는 Selector가 필요하다.
- 10bit Selector를 통해 해당 레지스터에 접근하여 Read / Write 작업을 수행 할 수 있다.
< Source >
module SRAM_implemented_with_D_Flip_Flop(
input clk, enable, reset_p,
input read_enable_p, write_enable_p,
input [9:0] memory_address,
inout [7:0] data );
// 자료형이 reg [7:0] ( = 8bit register)이며,
// 배열의 사이즈가 1024이다.
reg [7:0] register [1023:0];
always @(posedge clk) begin
if(enable)
if(write_enable_p) register[memory_address] = input_data;
end
assign output_data = (read_enable_p)? register[memory_address] : 'bz;
endmodule
- reg [7:0] register [1023:0];
▶ 배열의 자료형은 reg [7:0] 이며, 배열의 사이즈는 1024이다. - ★★★★★★
Q) inout 자료형은 무엇인가?
A) input과 Output을 동시에 수행할 수 있는 wire을 의미하며, 동시에 Read 와 Write 작업을 수행할 수 없기 때문에 사용시 주의가 필요하다. - read_enable_p , write_enable_p 값에 따라 레지스터에 데이터를 write 및 read 작업을 제어한다.
'RTL Design > Verilog RTL 설계' 카테고리의 다른 글
Verilog RTL 설계(7월 16일 - 3, Basys3 입문) (0) | 2024.07.18 |
---|---|
Verilog RTL 설계(7월 16일 - 2, Prescaler) (0) | 2024.07.17 |
Verilog RTL 설계(7월 16일 - 1, PIPO Shift Register) (0) | 2024.07.16 |
Verilog RTL 설계(7월 15일 - 4, PISO Shift Register) (0) | 2024.07.16 |
Verilog RTL 설계(7월 15일 - 3, SISO Register, SIPO Register) (2) | 2024.07.16 |