l20 – register set. the 430 register set not exactly a dual ported register set, but a dual drive...
DESCRIPTION
The MSP 430 datapath There are two busses driving data to the ALU There is also a MDB There is also a MAB Registers are 16 bit R0,R1,R2 and R3 are special purpose register The PC, the SP, SR, and constant Any can be used as arguments in instructions and all are connected to the internal busses 9/2/2012 – ECE 3561 Lect 9 Copyright Joanne DeGroat, ECE, OSU3TRANSCRIPT
![Page 1: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/1.jpg)
L20 – Register Set
![Page 2: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/2.jpg)
The 430 Register Set Not exactly a dual ported register set, but a
dual drive register set.
Ref: text Unit 10, 17, 20
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 2
![Page 3: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/3.jpg)
The MSP 430 datapath There are two busses driving data to
the ALU There is also a MDB There is also a MAB Registers are 16 bit R0,R1,R2 and R3 are special purpose
register The PC, the SP, SR, and constant Any can be used as arguments in
instructions and all are connected to the internal busses
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 3
![Page 4: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/4.jpg)
Register line structure – dual ported Diagram
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 4
![Page 5: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/5.jpg)
The register design 430 DP The register cell structure is somewhat less
complicated as there is only one source for a new value.
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 5
![Page 6: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/6.jpg)
Still need the bus driver The bus driver is still needed to drive the bus. They are the same as before, but they are now
16 bits each.
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 6
![Page 7: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/7.jpg)
The bus drivers The code LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.all; ENTITY busdr8 IS PORT (drive : IN std_logic; data : IN std_logic_vector(7 downto 0); intbus : OUT std_logic_vector(7 downto 0)); END busdr8;
ARCHITECTURE one OF busdr8 IS BEGIN PROCESS (drive,data) BEGIN IF (drive='1') THEN intbus <= data; ELSE intbus <= "ZZZZZZZZ"; END IF; END PROCESS; END one;
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 7
![Page 8: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/8.jpg)
Quartis result The synthesis result Resources – tri-state pins
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 8
![Page 9: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/9.jpg)
Next assignment The next assignment is to create a bus driver,
a 4-to-16 demultiplexer, and a 16-bit register cell.
Write the VHDL code for it. You can write a simple test bench to test it
logically it you want, but most likely will wait until the register set is done to do the logic simulation.
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 9
![Page 10: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/10.jpg)
Have a bus driver that works!! LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.all; ENTITY busdr8 IS PORT (drive : IN std_logic; data : IN std_logic_vector(7 downto 0); intbus : OUT std_logic_vector(7 downto 0)); END busdr8;
ARCHITECTURE one OF busdr8 IS BEGIN PROCESS (drive,data) BEGIN IF (drive='1') THEN intbus <= data; ELSE intbus <= "ZZZZZZZZ"; END IF; END PROCESS; END one;
The new approach
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 10
![Page 11: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/11.jpg)
Put together for four of them LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.all; ENTITY m4drv IS PORT (intbus : INOUT std_logic_vector(7 downto 0); data1,data2,data3,data4 : IN std_logic_vector(7 downto 0); dr1,dr2,dr3,dr4 : IN std_logic); END m4drv; ARCHITECTURE one OF m4drv IS COMPONENT busdr8 IS PORT (drive : IN std_logic; data : IN std_logic_vector(7 downto 0); intbus : OUT std_logic_vector(7 downto 0)); END COMPONENT; FOR all : busdr8 USE ENTITY work.busdr8(one); --internal signals BEGIN u1 : busdr8 PORT MAP (dr1,data1,intbus); u2 : busdr8 PORT MAP (dr2,data2,intbus); u3 : busdr8 PORT MAP (dr3,data3,intbus); u4 : busdr8 PORT MAP (dr4,data4,intbus); END one;
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 11
![Page 12: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/12.jpg)
Results for bus driver Now have no fixed 0’s
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 12
![Page 13: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/13.jpg)
Prior results The prior results, although they looked like they
worked, didn’t. ARCHITECTURE one OF mdrv IS COMPONENT busdr IS PORT (drive : IN std_logic; data : IN std_logic; intbus : OUT std_logic); END COMPONENT; FOR all : busdr USE ENTITY work.busdr(one); --internal signals SIGNAL dr1,dr2,dr3 : std_logic; SIGNAL data1,data2,data3 : std_logic; BEGIN u1 : busdr PORT MAP (dr1,data1,intbus); u2 : busdr PORT MAP (dr2,data2,intbus); u3 : busdr PORT MAP (dr3,data3,intbus); END one;
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 13
![Page 14: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/14.jpg)
The 4-to-16 multiplexer Specification
Input – 4 bit binary number Output – 16 lines numbered o0 to o15 operation
is such that only 1 of the outputs is active, indicating the value of the 4-bit binary input.
Input and output type – can be std_logic or std_logic_vector.
Recommend using direct output generation by writing the logic equation for each output line directly from the 4-bit input.
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 14
![Page 15: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/15.jpg)
The 16-bit register cell Write a VHDL ENTITY and
ARCHITECTURE for a 16-bit register unit. Inputs – latch – std_logic din – std_logic_vector Output dout – std_logic-vector
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 15
![Page 16: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/16.jpg)
An 8 bit register This is code for an 8-bit register – 8 F/Fs LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.all; ENTITY reg8 IS PORT (datain : IN std_logic_vector(7 downto 0); load : IN std_logic; dataout : OUT std_logic_vector(7 downto 0)); END reg8;
ARCHITECTURE one OF reg8 IS
BEGIN PROCESS (datain,load) BEGIN IF (load='1' AND load'event) -- IF (rising_edge(load)) THEN dataout <= datain; END IF; END PROCESS; END one;
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 16
![Page 17: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/17.jpg)
Another use of the register cell The register cell will also be used for the
input latching for the inputs to the ALU. The bus driver will also be used for the output
driver of the ALU result onto its bus.
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 17
![Page 18: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/18.jpg)
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 18
![Page 19: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/19.jpg)
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 19
![Page 20: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/20.jpg)
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 20
![Page 21: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/21.jpg)
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 21
![Page 22: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/22.jpg)
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 22
![Page 23: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/23.jpg)
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 23
![Page 24: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/24.jpg)
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 24
![Page 25: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/25.jpg)
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 25
![Page 26: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/26.jpg)
The objective Dual ported register set
2 data busses Can load or drive either
bus No timing – only control
To insure this unit will synthesize need to do it subcomponent by subcomponent and structurally.
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 26
Reg 0
Reg 1
Reg 2
Reg 15
A BUS
BBUS
AregNo Aload Adrive
BregNo Bload Bdrive
![Page 27: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/27.jpg)
Why dual ported? Traditional processor architecture Accumulator based operation RISC
Reduced Instruction Set Computer Basis – all operations take 1 cycle Can’t achieve with an accumulator architecture Have to fetch 2nd argument
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 27
![Page 28: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/28.jpg)
RISC Requirements Need to fetch both operands at once in one
cycle Dedicated instructions
Load Store Functional
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 28
Reg 0
Reg 1
Reg 2
Reg 15
A BUS BBUS
AregNo Aload
Adrive
BregNo Bload Bdrive
Ainput Binput
ALU
A_ALUload
A_ALUdrive
B_ALUload
B_ALUdrive
oper
C N Z
Cin
![Page 29: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/29.jpg)
Synthesis results Results in just registers Resources – 8 registers on FPGA
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 29
![Page 30: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/30.jpg)
2-to-1 multiplexer 8-bit The code LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.all; ENTITY mux2to1x8 IS PORT (linput,rinput : IN std_logic_vector(7 downto 0); sel : IN std_logic; dataout : OUT std_logic_vector(7 downto 0)); END mux2to1x8;
ARCHITECTURE one OF mux2to1x8 IS BEGIN dataout <= linput when sel='0' ELSE rinput; END one;
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 30
![Page 31: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/31.jpg)
Synthesis Results for mux 8-bit 2-to-1 mulitplexer Resources – 8 combinational LUTs
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 31
![Page 32: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/32.jpg)
A register line Combine the register, the bus drivers (one for ABUS,
one for Bbus), and a 2-to-1 mux for selecting which bus to have for input. LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.all; ENTITY reg_line_str IS PORT (ABUS,BBUS : INOUT std_logic_vector (7 downto 0); aload,bload : IN std_logic; adrive,bdrive : IN std_logic; sel : IN std_logic); END reg_line_str;
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 32
![Page 33: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/33.jpg)
The code ARCHITECTURE one OF reg_line_str IS COMPONENT reg8 IS PORT (datain : IN std_logic_vector(7 downto 0); load : IN std_logic; dataout : OUT std_logic_vector(7 downto 0)); END COMPONENT; FOR all : reg8 USE ENTITY work.reg8(one); COMPONENT busdr8 IS PORT (drive : IN std_logic; data : IN std_logic_vector(7 downto 0); intbus : OUT std_logic_vector(7 downto 0)); END COMPONENT; FOR all : busdr8 USE ENTITY work.busdr8(one); COMPONENT mux2to1x8 IS PORT (linput,rinput : IN std_logic_vector(7 downto
0); sel : IN std_logic; dataout : OUT std_logic_vector(7 downto 0)); END COMPONENT; FOR all : mux2to1x8 USE ENTITY
work.mux2to1x8(one);
-- INTERNAL SIGNALS SIGNAL muxout,regout : std_logic_vector (7 downto 0); SIGNAL muxsel,rload : std_logic; BEGIN m1 : mux2to1x8 PORT MAP
(ABUS,BBUS,muxsel,muxout);
muxsel <= Aload AND sel;
r1 : reg8 PORT MAP (muxout,rload,regout);
rload <= (Aload OR Bload) AND sel;
abd : busdr8 PORT MAP (adrive,regout,ABUS); bbd : busdr8 PORT MAP (bdrive,regout,BBUS); END one;
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 33
![Page 34: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/34.jpg)
The results Synthesis results for a single dual ported
register.
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 34
![Page 35: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/35.jpg)
Decoder to build a register set Need to activate the correct register from a register set. LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.all; ENTITY decoder2to4 IS PORT (addr : IN std_logic_vector(1 downto 0); sel_line : OUT std_logic_vector(3 downto 0)); END decoder2to4;
ARCHITECTURE one OF decoder2to4 IS BEGIN sel_line(0) <= NOT addr(1) AND NOT addr(0); sel_line(1) <= NOT addr(1) AND addr(0); sel_line(2) <= addr(1) AND NOT addr(0); sel_line(3) <= addr(1) AND addr(0); END one;
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 35
![Page 36: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/36.jpg)
Decoder synthesis Synthesis gives Resources – pins and 4 combinaltional LUTs
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 36
![Page 37: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/37.jpg)
A full register set A full register set would have at least 8
registers. Here will start with 2 registers.
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 37
![Page 38: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/38.jpg)
The code Have all the reference unit code. The first time abbreviated ENTITY interface
– only the busses. LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.all; ENTITY reg_set_2 IS PORT (ABUS,BBUS : INOUT std_logic_vector(7 downto 0)); END reg_set_2;
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 38
![Page 39: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/39.jpg)
The 2 register architecture ARCHITECTURE one OF reg_set_2 IS -- this architecture is to confirm the build up of bus units COMPONENT reg_line_str IS PORT (ABUS,BBUS : INOUT std_logic_vector (7 downto 0); aload,bload : IN std_logic; adrive,bdrive : IN std_logic; sel : IN std_logic); END COMPONENT; FOR all : reg_line_str USE ENTITY work.reg_line_str(one); -- now delcare signals for test setup SIGNAL aload1,bload1,adrive1,bdrive1,sel1 : std_logic; SIGNAL aload2,bload2,adrive2,bdrive2,sel2 : std_logic; BEGIN r1 : reg_line_str PORT MAP (ABUS,BBUS,aload1,bload1,adrive1,bdrive1,sel1); r2 : reg_line_str PORT MAP (ABUS,BBUS,aload2,bload2,adrive2,bdrive2,sel2); END one;
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 39
![Page 40: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/40.jpg)
Quartis results After synthesis Report usage only shows pins – you have to
traverse into each unit to get resources. Can see these by running cursor over the unit in the RTL viewer.
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 40
![Page 41: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/41.jpg)
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 41
![Page 42: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/42.jpg)
Usage summary by using cursor For each register line
32 buffers (regular) 2 combination ANDs 1 combination OR 8 DFF 16 Tri-state buffers 8 muxes
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 42
![Page 43: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/43.jpg)
Expanding register line unit Pushing down by double clicking in unit box The same unit from before
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 43
![Page 44: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/44.jpg)
Now moving control signals Move the control signals to the ENTITY.
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 44
![Page 45: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/45.jpg)
The last step Adding a decoder to generate the selects This time a 1-to-2 decoder Then a bunch of errors popped up so back up.
Do the implementation one step at a time Add the regno signal to the ENTITY
WORKED FINE Add the decoder COMPONENT – re-synthesize
WORKED FINE Add and instantiation for the decoder
WORKED FINE Finally link the decoder output to the select lines with
concurrent signal assignment statements. It then started generating errors so starting a new approach.
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 45
![Page 46: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/46.jpg)
Build up from drivers The architecture – Diagram not complete
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 46
![Page 47: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/47.jpg)
The units The tri-state bus drivers
4 of them 8-bits each in a hierarchical unit The registers
4 of them as instantiated units Mux2to1x8 – a byte width 2 to 1 multiplexer used to select which
input to have available to load into register, the ABUS or the BBUS
Decoders 2 to 4 – takes the 2 bit register number and generates the correct select line – used for selecting which register to load from the ABUS or BBUS and which register to drive. Note that the system can drive just register. It is capable of two operations each cycle.
Glue logic – generated the load and drive signals.
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 47
![Page 48: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/48.jpg)
Results for the design Resources
Pins – 24 ABUS – 8 BBUS – 8 aload,bload,adrive,bdrive – 4 aregno,bregno – 2 each – 4
Registers – 32 (4 registers 8-bits each) Combinational LUTs – 60
Average fanout – 3.31
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 48
![Page 49: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/49.jpg)
Synthesis results Quartis produced graphic
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 49
![Page 50: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/50.jpg)
Pushing down Decoder register and mux
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 50
![Page 51: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/51.jpg)
Next step The next step is the VHDL simulation of the
register set to be sure its behavior is as desired.
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 51
![Page 52: L20 – Register Set. The 430 Register Set Not exactly a dual ported register set, but a dual drive register set. Ref: text Unit 10, 17, 20 9/2/2012](https://reader035.vdocuments.mx/reader035/viewer/2022062302/5a4d1afd7f8b9ab05998524b/html5/thumbnails/52.jpg)
Lecture summary Have seen how to create a 4 register location
register-set.
The next assignment is to use the code here (which is also on the web page) to generate a 8 location register. Simply build upon this code.
9/2/2012 – ECE 3561 Lect 9
Copyright 2012 - Joanne DeGroat, ECE, OSU 52