代写EEEE4123 HDL FOR PROGRAMMABLE DEVICES帮做Matlab编程

DEPARTMENT OF ELECTRICAL AND ELECTRONIC ENGINEERING

HDL FOR PROGRAMMABLE DEVICES

MODULE CODE: EEEE4123

Resit Project - Matrix Processing Core Design

1     INTRODUCTION

Matrix calculation is one of the fundamental mathematic calculations commonly used in advanced signal processing algorithms for a wide range of applications, such as satellite navigation systems, complex control systems and etc. In order to implement such advanced signal processing algorithms on an FPGA based embedded system, we need to use VHDL to design a matrix processing core for  an AMD FPGA device.

2     PROJECT DESCRIPTION

In this project, you are asked to develop a synthesisable matrix processing core, which is able to do matrix multiplication and addition (Fig. 1) for matrixes with the size of 32 x 32 and an 16-bit signed integer for each element of the input matrixes (A, B and C), and then implement the core on an AMD FPGA device with your choice. You are required to use behavioural simulation to verify your matrix processing core.

Fig. 1 Matrix Multiplication and Addition

The Matrix processing Core as shown in Fig. 2 mainly consists ofa signed multiplier, two signed  adders, three input buffers (InputBufferA, InputBufferB and InputBufferC) and one output buffer  (OutputBufferD). All these four buffers are simple dual-port block memories with part A for write and port B for read, which are created by using Xilinx core generator. Those three input buffers have the same size of 1024 x 16 bits, which are used to receive the data for matrix A, matrix B and matrix C, respectively. The output buffer has a size of 1024 x 64 bits, which is for the results of the matrix calculation. The data organisation of these four buffers is shown in Fig. 3.

Fig. 2 Matrix Processing Core

Fig. 3 Buffer Data Organisation

Write/Read timing requirements are shown in Fig. 4 and Fig. 5, respectively. In order to write a data to a particular address of the dual-port RAM, the valid data and address to be written must be presented at the signals, ‘dina’ and ‘addra’ at the rising edge of the clock with ‘1’ for signal ‘wea’ at the same rising edge. From the read operation, the address to be read must be presented at signal, ‘addrb’ at the rising edge of the clock with ‘1’ for signal ‘enb’ at the same rising edge. The read data will be available at signal doutb’just after the rising edge.

Fig. 4 Timing for Write Operation to the Dual-Port RAM

Fig. 5 Timing for Read Operation to the Dual-Port RAM

3     DESIGN TASKS

Design a synthesisable matrix processing core and its testbench.

The specific design requirements are as follows:

•  To facilitate the assessment of your matrix processing core design, you must use the following entity declaration for the top level design.

-- Required entity declaration

entity IntMatProCore is

port(

Reset, Clock, WriteEnable:in std_logic;

-- BufferSel: "00" for input buffer A, "01" for input buffer B, "10" for input buffer C

BufferSel:    in std_logic_vector (1 downto 0);

WriteAddress: in std_logic_vector (9 downto 0);

WriteData:    in std_logic_vector (15 downto 0);

ReadAddress:  in std_logic_vector (9 downto 0);

ReadEnable:   in std_logic;

ReadData:     out std_logic_vector (63 downto 0);

DataReady:    out std_logic

);

end IntMatProCore;

•  In the testbench, you must use VHDL file I/O to read the data for three input matrixes from three input text files (inputA.txt, inputB.txt and inputC.txt) and then feed them to the design. Once the matrix calculation is completed, you must read out the results from the output buffer, compared with the output data (outputD_matlab.txt) from your Matlab model and write output data from your VHDL simulation and the comparison results into an output text file (outputD.txt). Please refer to the reference design provided.

•  The testbench must produce all the input signals and the simulation waveforms must show how the data of the matrixes A/B/C are written into the input buffers and how the matrix calculation results are read out from the output buffer.

•  The description of interface signals:

Signal

Description

Reset

Synchronous reset, active high, to reset the matrix multiplier core. Whenever issued, it lasts 10 cycles.

Clock

The global clock signal for the matrix multiplier core.

WriteEnable

Active high, to enable write the data of matrixes A and B into the input  buffers,   InputBufferA and InputBufferB, respectively. BufferSel will design which input buffer will be written.

BufferSel

"00" for input buffer A, "01" for input buffer B, "10" for input buffer C.

WriteAddress

Write address signal for InputBufferA/B/C.

WriteData

Data signal for matrixes A/B/C. ‘BufferSel’ will decide which data should be presented at ‘WriteData’.

ReadAddress

Read address signal of the outputbuffer, OutputBufferD.

ReadEnable

Active high, to enable read operation for the outputbuffer.

ReadData

Whenever the ReadEnable signal is high at the rising edge of the Clock, the data in the output buffer pointed by ReadAddress at the same rising edge will appear at ReadData immediately after

the same rising edge.

DataReady

Active high, to indicate that the matrix calculation results have been written into the output buffer and are ready for reading out from part B of the output buffer. DataReady must last one cycle.

4 REFERENCE DESIGN

To get your VHDL project design started easily, a synthesisable matrix multiplier core design is provided as a reference design (Fig. 6/Fig. 7),  which is able to do matric multiplication for matrixes with the size of 4 x 4 and an 8-bit signed integer for each element of the input matrixes (A and B). The data buffers will be organised as Fig. 8.

Fig. 6 Matrix Multiplication

Fig. 8 Memory buffer organisation for the matrix multiplier core

5     DESIGN TOOLS

The project design tools is Xilinx Vivado WebPACK 2018.3.

6     PROJECT SUBMISSION

The VHDL project must be submitted on Moodle by 3:00pm, Monday, 11th August 2025. The submission must have a single zip file with a name of student name_student ID.zip, which includes the following:

•  A word file - 10-page project report

•  VHDL source codes

•  Matlab codes

•  inputA.txt, inputB.txt, inputC.txt - Input test data generated from your Matlab model

•  outputD_matlab.txt - Output test data generated from your Matlab model

•  outputD.txt - Output data produced from your VHDL testbench and the comparison result between the output data from your Matlab model and the output data from your VHDL simulation

•  Any other relevant files

Entire Vivado project folder for your VHDL project design

The marking scheme of the VHDL project is as follows:

•  Design, Implementation and Verification (50%): It assesses:

o Matlab Model with signed integers

o VHDL code compilation

o Behavioural simulation

o Synthesis

o Coding quality

o Design efficiency

•   10-page report (50%): It should cover:

o Part 1

Current AMD FPGA technology review (up to 2 pages)

o Part 2

Description of project design

Simulation  including  a  few  simulation  waveforms  to  justify  your  design verification

Project discussion including the reason why you have chosen a particular FPGA device for your design

Conclusions

Further work

NOTE:      A penalty of 5% per working day will be imposed for the late submission.




热门主题

课程名

mktg2509 csci 2600 38170 lng302 csse3010 phas3226 77938 arch1162 engn4536/engn6536 acx5903 comp151101 phl245 cse12 comp9312 stat3016/6016 phas0038 comp2140 6qqmb312 xjco3011 rest0005 ematm0051 5qqmn219 lubs5062m eee8155 cege0100 eap033 artd1109 mat246 etc3430 ecmm462 mis102 inft6800 ddes9903 comp6521 comp9517 comp3331/9331 comp4337 comp6008 comp9414 bu.231.790.81 man00150m csb352h math1041 eengm4100 isys1002 08 6057cem mktg3504 mthm036 mtrx1701 mth3241 eeee3086 cmp-7038b cmp-7000a ints4010 econ2151 infs5710 fins5516 fin3309 fins5510 gsoe9340 math2007 math2036 soee5010 mark3088 infs3605 elec9714 comp2271 ma214 comp2211 infs3604 600426 sit254 acct3091 bbt405 msin0116 com107/com113 mark5826 sit120 comp9021 eco2101 eeen40700 cs253 ece3114 ecmm447 chns3000 math377 itd102 comp9444 comp(2041|9044) econ0060 econ7230 mgt001371 ecs-323 cs6250 mgdi60012 mdia2012 comm221001 comm5000 ma1008 engl642 econ241 com333 math367 mis201 nbs-7041x meek16104 econ2003 comm1190 mbas902 comp-1027 dpst1091 comp7315 eppd1033 m06 ee3025 msci231 bb113/bbs1063 fc709 comp3425 comp9417 econ42915 cb9101 math1102e chme0017 fc307 mkt60104 5522usst litr1-uc6201.200 ee1102 cosc2803 math39512 omp9727 int2067/int5051 bsb151 mgt253 fc021 babs2202 mis2002s phya21 18-213 cege0012 mdia1002 math38032 mech5125 07 cisc102 mgx3110 cs240 11175 fin3020s eco3420 ictten622 comp9727 cpt111 de114102d mgm320h5s bafi1019 math21112 efim20036 mn-3503 fins5568 110.807 bcpm000028 info6030 bma0092 bcpm0054 math20212 ce335 cs365 cenv6141 ftec5580 math2010 ec3450 comm1170 ecmt1010 csci-ua.0480-003 econ12-200 ib3960 ectb60h3f cs247—assignment tk3163 ics3u ib3j80 comp20008 comp9334 eppd1063 acct2343 cct109 isys1055/3412 math350-real math2014 eec180 stat141b econ2101 msinm014/msing014/msing014b fit2004 comp643 bu1002 cm2030
联系我们
EMail: 99515681@qq.com
QQ: 99515681
留学生作业帮-留学生的知心伴侣!
工作时间:08:00-21:00
python代写
微信客服:codinghelp
站长地图