지난시간에 Adder를 설계해보고 실제로 시뮬레이션까지 돌려보았다.
Logic circuit_4: Combination Logic(1)
논리회로는 combination logic과 sequential logic 2개로 분류할 수 있다.input이 들어가면 바로 output이 나오는 combination logic에 대해 며칠에 거쳐 포스팅할 예정이다.또한, 해당 내용 포스팅이 끝나면 관련
ksh9-9.tistory.com
오늘은 지난시간에 설계한 Adder를 인스턴스화시켜서 4bit ripple carry adder를 설계해보고 위에 첨부한 포스팅에서 설계한 Delay가 적은 4bit Adder까지 동일하게 설계한 후에 동일한 결과가 나오는지 확인까지 해보겠다.
![]() |
![]() |
Ripple Carry Adder
![]() |
![]() |
Test bench
Ripple Carry Adder를 instination이라는 방법을 써서 Full Adder를 사용한 방법으로 Verilog coding을 진행하였는데,
이게 전체 ripple carry adder구조이고, 안에 아래와같은 Full Adder가 4개 들어가게 설계를 해 놓은 상태이다.
Verilog는 코딩을할때 "연결"에 집중해줘야한다는것을 명심하고,
RCA 모듈 전체의 port를 4bit X, 4bit Y, C_0, 5bit output임을 처음에 생각을하고 나머지 안에 구성되는 것들을 wire로 선언해준다.
그 후, instination방법을 사용하여 아래와같이 하위모듈과 탑모듈을 "연결" 시켜준다.
이제 위 베릴로그짠것을 behavioral simulation을 돌리게되면 다음과 같은 결과가 나오게 된다.
testbench에서 input을 넣어주고 예상한결과가 그대로 잘 나오게 되는것을 확인할 수 있다.
이때, ripple carray adder는 delay가 있다고 한것을 기억할 것이다. 이를 직관적으로 알아보기 위해 synthesis와 implementation까지 실행시켜보고 다시 simulation 파형을 관찰해보면,
다음과같은 결과 파형을 얻을 수 있다.
하드웨어인만큼 delay가 엄청날 수 없다는것을 이론적으로 알고 있었고, implementation simulation결과가 예상한대로 나오는것을 직접확인한 것이다.
testbench상에서 10ns 자체를 5ns로바꾸어 다시 simulation돌려보면 위와같이 나오는데 대략
Latency자체가 8ns근처로 되는것을 볼 수 있다.
Timing report를 확인해보면,
위와같이 setup/ hold time violation은 slack>0인것을보아 발생하지 않는다. (사실 4bit ripple carry adder자체는 너무 간단해서 그런듯 싶다.) 시간이 될때 좀 더 사이즈를 키워 감/가산기 또는 곱셈기등의 설계를 나중에 해보는 시간을 가져보겠다.
ripple carry adder의 simulation파형을 보았으니 다음은 Delay를 개선한 4bit Adder를 설계해보겠다.
(생각보다 설명할게 많아서 다음 포스팅에 이어나가도록 하겠다.)
'공부 > Verilog' 카테고리의 다른 글
6. Sequential Logic_ Counter (0) | 2025.01.18 |
---|---|
5. Binary multiplier (2) | 2025.01.14 |
3. Design Full Adder (1) | 2025.01.11 |
2. Verilog_ Simulation by using Vivado (0) | 2025.01.11 |
1. Verilog_Preview (0) | 2025.01.10 |