24.04.2013 Views

Verification of Parameterised FPGA Circuit Descriptions with Layout ...

Verification of Parameterised FPGA Circuit Descriptions with Layout ...

Verification of Parameterised FPGA Circuit Descriptions with Layout ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

CHAPTER 6. LAYOUT CASE STUDIES 138<br />

new value<br />

delays<br />

insert<br />

previous state<br />

locater<br />

compactor<br />

next state<br />

midelem<br />

median value<br />

Figure 6.5: Block diagram for the median filter<br />

simply insert a value into the correct position in an already sorted list.<br />

6.3.1 <strong>Circuit</strong> Design<br />

Our design is loosely based on a state-machine based design previously described in Ruby [26],<br />

however our realisation differs substantially and, we would suggest, is made much simpler by<br />

using the full features <strong>of</strong> Quartz rather than basic Ruby relations 2 . Figure 6.5 shows the basic<br />

architecture <strong>of</strong> our filter, <strong>with</strong> several blocks that operate on a current state and produce a<br />

next state. This is essentially the state transition and output logic <strong>of</strong> a state machine and<br />

this circuit can be composed <strong>with</strong> appropriate registers using the loop combinator.<br />

The two inputs to this filter core are the previous state (a set <strong>of</strong> sorted values) and a single<br />

new value. This new value is inserted into the sorted list by the insert block which implements<br />

one stage <strong>of</strong> an insertion sort. If the state contains n elements then the output <strong>of</strong> the insert<br />

block contains n + 1 elements, one <strong>of</strong> which (the oldest) must now be removed.<br />

As well as being connected to the insert block the new value is also fed into an n-element<br />

shift register, which is used to determine the value to remove to make the new state. The<br />

locater carries this out, matching the value from n cycles ago <strong>with</strong> the values in the state<br />

until the first match is found.<br />

The locater is composed <strong>of</strong> a row <strong>of</strong> lct cells, which are shown in Figure 6.6(a). These cells<br />

2 The Ruby design was however refined into a bit-level version, while we will concentrate on the word-level<br />

circuit.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!