본문 바로가기

Semiconductor/ASIC & FPGA

(16)
Delay / Skew / Slack / Slew Delay ASIC 또는 FPGA에서 발생하는 Delay는 흔히 이야기하는 딜레이가 맞습니다. DELAY = CELL_DELAY + NET_DELAY 여기서 CELL은 AND, OR, FlipFlop등의 셀을 의미하며 NET은 이들을 연결하는 WIRE를 의미합니다. CELL_DELAY는 전자의 이동속도 등과 관련이 있으며 CELL_DELAY는 아래 그림과 같이 세수대야 모델로 이해 할 수 있습니다. 세수대야를 CELL로 봅니다. 대야속의 물의 높이 즉 '수위'가 CELL의 값을 나타냅니다. 물이 비어있다고 가정하면 0의 값이며 수도꼭지를 틀어 수위가 1이 될 때 까지의 시간을 RISE_DELAY라고 합니다. 그리고 구멍을 열어 수위가 다시 0이 될 때 까지의 시간을 FALL_DELAY라고 합니다. 물 대..
Debounce a Switch in a FPGA Fix button glitches on your development board If you are using a development board that has switches, you should be careful. Physical switches such as push buttons and toggle switches are all subject to bouncing. Bouncing occurs when the switch is toggled or flipped. It happens in all switches as a result of the metal contracts coming together and apart quickly before they have time to settle ou..
Block RAM( BRAM) Black RAMs stands for Block Random Access Memory. Block RAMs are used for storing large amounts of data inside of your FPGA. They one of four commonly identified components on an FPGA datasheet. The other three are Flip-Flops, Look-up tables and Digital signal processors. Usually the bigger and more expensive the FPGA, the more Block RAM it will have on it. Since this is found right at the top o..
Crossing Clock Domain Crossing Clock Domain inside of an FPGA is a common task. Problems can occur if the digital designer does not understand all of the details involved in crossing from one clock domain into another. A single clock domain entails all of the Flip-Flops that are driven by one. Crossing from slower clock domain to faster clock domain The simplest type of crossing is going from one clock domain to a fa..
Timing Verilog 합성에 있어 Timing과 동작 기능은 항상 같이 고려해야 할 문제입니다. 설계자가 설계한 것을 Simulation을 통해 정상적인 동작을 하는지 검증한 후 합성과정을 거치게 됩니다. 이러한 합성과정에서 Verilog 코드는 특정한 Technology library( 칩 공정에 해당하는 Cell-library)에 있는 Hardware Logic-gate로 Mapping됩니다. 이 때 설계자는 합성 Tool의 합성을 위한 설계 제한( Design contraint) 즉, 동작속도제한, 합성 Logic 크기제한 등을 지정하게 됩니다. 합성 Tool은 이러한 설계제한에 맞추어 Hardware를 최적화 시키며 합성하게 됩니다. 이 후 이러한 합성 결과가 Timing 기준을 만족시키면 설계자는 La..
Propagation Delay Propagation delay is the amount of time it takes for a signal to travel from a source to a destination. Propagation delay is a fundamental concept of how digital circuits work. Inside of FPGA or ASIC there are thousands of tiny wires running everywhere. When you add up the physical length of the wires, they can easily be over a foot long, which is pretty amazing considering how small the chips a..
Shift Register Create delays and convert serial to parallel data in FPGAs Shift registers are a common FPGA building block. They are created by cascading Flip-Flops in a chain. All registers must share the same clock, the output of one register must be connected to the input of the next register in the chain. Shift registers are mainly used to accomplish one of three goals. Delaying data by some number of cloc..
Metastability Metastability Asynchronous clock간 신호를 교환 할 시 보통 Flip-Flop 2개를 연달아 지나가도록 설계합니다. 이러한 방법으로 Metastability를 피할 수 있다고 하며 Metastability란 간단히 Low-level도 High-level도 아닌 중간 상황이 지속되는 것을 말합니다. 이것 말고 unknown이라는것도 있는데 이것은 말 그대로 Low인지 High인지 모르지만 둘 중 하나인것입니다. Metastability는 중간값을 가지는 것이 문제입니다. 문제가 되는 이유는 CMOS 회로는 간단하게 PMOS로 이루어져 VDD로 출력을 연결하는 PULL-UP회로와 NMOS로 이루어져서 출력을 GROUND로 연결하는 PULL-DOWN회로로 구성됩니다. 그래서 일반적인 ..
What is a FPGA Latch? You should never use a latch in your FPGA. Let's discuss what latch is and how they are generated in HDL code and learn how to avoid generating them accidentally. The usual latch that is generated by the synthesis tools( The tools that convert your Verilog or VHDL code to low-level FPGA components) is the Gated D Latch. However, there are other types of latches. I suggeted that latches should be..
What is a FIFO in an FPGA? How FIFO buffers are used to transfer data and cross clock domains. The acronym FIFO stands for First In FIrst Out. FIFOs are used everywhere in FPGA and ASIC designs, they are one of the basic building blocks. And they are very handy. FIFOs can be used for any of these purposes. Purposes - Crossing clock domains - Buffering data before sending it off chip( to DRAM or SRAM) - Buffering data for ..