FPGA-CNN-master

所属分类:其他
开发工具:Verilog
文件大小:14494KB
下载次数:200
上传日期:2017-08-05 21:06:30
上 传 者花生米123
说明:  fpga硬件实现cnn代码,学习可用。了解基本的深度学习概念和实现方法
(FPGA hardware implementation of the code, used for learning)

文件列表:
16by16_index.xlsx (10985, 2016-05-05)
CNN Research Report.pdf (123211, 2016-05-05)
DE1_User_Manual.pdf (2415844, 2016-05-05)
Fomula.PNG (10439, 2016-05-05)
General Algorithm for CNN Template Learning.pdf (976618, 2016-05-05)
Naive CNN 18 multiplication per clock cycle_V3.rar (2245, 2016-05-05)
Naive CNN 18 multipliers per cell complete_V5.zip (21766, 2016-05-05)
Naive CNN 18 multipliers per cell one time unit process complete_V2.rar (815078, 2016-05-05)
Naive CNN 18 multipliers per cell run out of input pads_V1.rar (1002616, 2016-05-05)
Naive CNN 18 multipliers per cell wait for simulation_V4.zip (4135, 2016-05-05)
Quartus (0, 2016-05-05)
Quartus\AssignGenerator.java (698, 2016-05-05)
Quartus\CNN.qpf (1243, 2016-05-05)
Quartus\CNN.v (34385, 2016-05-05)
Quartus\CNNfourbyfour.v (3381, 2016-05-05)
Quartus\ConstantGenerator.java (649, 2016-05-05)
Quartus\Eq1 Initial (0, 2016-05-05)
Quartus\Eq1 Initial\adder_unit.v (654, 2016-05-05)
Quartus\Eq1 Initial\convolution.v (2492, 2016-05-05)
Quartus\Eq1 Initial\equation1.v (1248, 2016-05-05)
Quartus\Eq1 Initial\equation2.v (730, 2016-05-05)
Quartus\Eq1 Initial\four_by_four.v (15581, 2016-05-05)
Quartus\Eq1 Initial\multiplier_unit.v (198, 2016-05-05)
Quartus\Eq1 Initial\one_by_one.v (1729, 2016-05-05)
Quartus\SixteenbySixteen18mulGenerator.java (17323, 2016-05-05)
Quartus\SixteenbySixteenGenerator18mulOutput.txt (182662, 2016-05-05)
Quartus\SixteenbySixteenGeneratorGenerator.java (18112, 2016-05-05)
Quartus\SixteenbySixteenGeneratorOutput.txt (192052, 2016-05-05)
Quartus\U_inAssign.txt (6835, 2016-05-05)
Quartus\adder.v (207, 2016-05-05)
Quartus\eq1.v (1416, 2016-05-05)
Quartus\eq1oneunit.v (3960, 2016-05-05)
Quartus\eq2.v (1239, 2016-05-05)
Quartus\fourbyfour.v (15131, 2016-05-05)
Quartus\fourbyfour18mul.v (14443, 2016-05-05)
Quartus\multiplier.v (210, 2016-05-05)
Quartus\onebyone.v (2247, 2016-05-05)
Quartus\onebyone18mul.v (2082, 2016-05-05)
Quartus\sixteenbysixteen.v (192052, 2016-05-05)
... ...

# FPGA CNN FPGA implementation of [Cellular Neural Network](http://www.scholarpedia.org/article/Cellular_neural_network) (CNN) ![CNN formula](https://github.com/dem123456789/FPGA-CNN/blob/master/Fomula.PNG "CNN") ## Initialization #### CNN `CNN.v` is Top-level design with initialization for A, B, I template `SixteenbySixteen.java` generates Verilog code for 16x16 layer module [sixteenbysixteen.v](https://github.com/dem123456789/FPGA-CNN/blob/master/Quartus/sixteenbysixteen.v) #### Default [CornerDetection](http://en.wikipedia.org/wiki/Corner_detection) Other available templates in [here](https://github.com/dem123456789/FPGA-CNN/blob/master/Template_library_v3.1.pdf) ## Instruction 1. Change the `size` variable in SixteenbySixteen can generate different dimension module 2. Contain a 4x4 layer module [fourbyfour.v](https://github.com/dem123456789/FPGA-CNN/blob/master/Quartus/fourbyfour.v) 3. fourbyfour.v and sixteenbysixteen.v use one multiplier and two adders in calculation of equation 1 4. Any files ended with 18mul are associated with the version using 18 multipliers and finishing equation 1 calculation in one clock cycle 5. Top level design CNN.v and CNNfourbyfour.v is shared with both versions 6. Change the module link, for example, sixteenbysixteen u1 to sixteenbysixteen18mul u1 will change to the version which does equation 1 calculation in one clock cycle 7. Eq1 Initial folder contains the work by Sangeetha J. who completes using one multiplier and one adder to calculate template A times output Y or template B times input U. The default version which using one multiplier and two adders in calcualtion of equation 1 is based on her contribution #### Default `size = 16;` CNN.v is using sixteenbysixteen.v ## Contributing 1. Fork 2. Create your feature branch: `git checkout -b my-new-feature` 3. Commit your changes: `git commit -am 'Add some feature'` 4. Push to the branch: `git push origin my-new-feature` 5. Submit a pull request ## Source *SP-CNN: A Scalable and Programmable CNN-based Accelerator*, Dilan Manatunga, Hyesoon Kim, Saibal Mukhopadhyay GOMACTech, Mar. 2015 ## Credits *Enmao Diao Ria Gupte Hyesoon Kim Joshua Lee Sangeetha J.* ## License The MIT License (MIT) Copyright (c) [2015] [Enmao Diao] Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

近期下载者

相关文件


收藏者