Question: Description: Create a project with behavioral VHDL and evaluate the behav - ioral - to - hardware translation process. Part A: Use Vivado to create

Description: Create a project with behavioral VHDL and evaluate the behav-
ioral-to-hardware translation process.
Part A: Use Vivado to create a project. Add the VHDL code which implements the multiplier
FSMD from the lecture. Open 'elaborated design' and identify components of the schematic that
correspond to elements of the VHDL code. Please include your name and the title "Lab #5: Mul-
tiplier FSMD from Lecture".
Part B: Use Vivado to create a project. Write your own VHDL code which instantiates the multi-
plier FSMD from Part A and implements the following:
Idle: It checks the ready signal, if '1', it applies two 8 bit values of your choice to the 8 bit
inputs of the multiplier and asserts the start signal and transitions to the WaitMultDone state.
WaitMultDone: It continuously checks the status of the ready signal. If ready becomes '1'
again, it transitions back to Idle. Please title "Lab #5: Multiplier FSMD with Parent Module".
This lab is worth 20 points.
```
FSMD Design Examples
architecture two_seg_arch of seq_mult is
constant WIDTH: integer :=8;
type state_type is (idle, ab0, load, op) ;
signal state_reg, state_next: state_type;
signal a_reg, a_next: unsigned(WIDTH-1 downto 0);
signal n_reg, n_next: unsigned(WIDTH-1 downto 0);
signal r_reg, r_next: unsigned(2*WIDTH-1 downto 0);
begin
-- state and data register
process(clk, reset)
begin
if (reset ='1') then
state_reg = idle;
a_reg =(others =>'0');
n_reg =(others =>'0');
r_reg =(others =>'0');
``````
\text {1 wo Segment VHDL Descriptions of FSNIDS}
elsif (clk'event and clk ='1') then
state_reg = state_next;
a_reg = a_next;
n_reg = n_next;
r_reg = r_next;
end if;
end process;
-- combinational circuit
process(start, state_reg, a_reg, n_reg, r_reg, a_in,
b_in, n_next)
begin
state_next = state_reg;
a_next = a_reg;
n_next = n_reg;
r_next = r_reg;
ready ='0';
``` Two Segment VHDL Descriptions of FSMDs
```
case state_reg is
when idle =>
if (start ='1') then
if (a_in ="00000000" or
b_in ="00000000") then
state_next = ab0;
else
state_next = load;
end if;
end if;
ready ='1';
when ab0=>
a_next = unsigned(a_in);
n_next = unsigned(b_in);
r_next =(others =>'0');
state_next = idle;
``````
when load =>
a_next = unsigned(a_in);
n_next = unsigned(b_in);
r_next =(others =>'0');
state_next = op;
when op =>
n_next = n_reg -1;
r_next =("00000000" & a_reg)+ r_reg;
if (n_next ="00000000") then
state_next = idle;
end if;
end case;
end process;
r = std_logic_vector(r_reg);
end two_seg_arch;
```
Description: Create a project with behavioral

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Programming Questions!