├── LICENSE ├── PROJ(ENGLISH) ├── 1-HELLO │ ├── Hello_pre.zip │ ├── Hello_pro.zip │ ├── README │ ├── chapter7.zip │ └── sim_hello.zip ├── 2-DHRY │ ├── DHRY_pre.zip │ ├── DHRY_pro.zip │ ├── README │ ├── chapter8.zip │ └── sim_dhry.zip ├── 3-uClinux │ ├── README │ └── uClinux.zip └── 4-Linux │ ├── README │ ├── linux.log │ └── linux.zip ├── README.md ├── RTL ├── README ├── arm9_compatiable_code.v ├── arm9_compitable_code_comment.v └── variant │ ├── risclite_mx.v │ └── risclite_mx_mult.v ├── TRAINING(CHINESE) ├── PPT │ ├── 1 FPGA设计基础.pptx │ ├── 2 RTL设计方法学.pptx │ ├── 3 UART串口设计实例.pptx │ ├── 3 rxtx.v │ ├── 4 ARM9架构剖析.pptx │ ├── 5 ARM9中断.pptx │ ├── 6 ARM9指令集.pptx │ ├── 7 流水线架构解析.pptx │ ├── 8 针对ARM9的设计架构.pptx │ ├── 9 兼容ARM9的处理器架构实现.pptx │ ├── a 兼容ARM9的软核处理器RTL设计.pptx │ ├── arm9_compitable_code_comment.v │ ├── b RISC处理器设计展望.pptx │ ├── c采用处理器软核的SoC设计.pptx │ ├── d ARM7TDMI介绍.pptx │ ├── e ARM7TDMI单片机运行uClinux.pptx │ └── f ARM920T为核心的mini2440开发板.pptx └── WEB │ ├── chapter2 │ └── rxtx.v │ ├── chapter3 │ └── uart.zip │ ├── chapter4 │ ├── MiniComm.exe │ ├── chapter41.zip │ └── chapter42.zip │ ├── chapter5 │ └── arm9.xls │ ├── chapter6 │ └── arm9_compitable_code_comment.v │ ├── chapter7 │ ├── Hello_pre.zip │ ├── Hello_pro.zip │ ├── chapter7.zip │ └── sim_hello.zip │ ├── chapter8 │ ├── DHRY_pre.zip │ ├── DHRY_pro.zip │ ├── chapter8.zip │ └── sim_dhry.zip │ ├── chapter9 │ ├── uclinux.jpg │ └── uclinux.rar │ ├── chapterA │ ├── linux.log │ └── linux.rar │ ├── risclite - 《兼容ARM9的软核处理器设计:基于FPGA》的配套教程下载 - Google Project Hosting.htm │ └── risclite - 《兼容ARM9的软核处理器设计:基于FPGA》的配套教程下载 - Google Project Hosting_files │ ├── codesite_product_dictionary_ph.pack.04102009.js │ ├── core.css │ ├── cover.jpg │ ├── defaultlogo.png │ ├── ga.js │ ├── ph_core.js │ ├── ph_detail.css │ └── prettify_core_compiled.js ├── linux.png └── uclinux.jpg /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /PROJ(ENGLISH)/1-HELLO/Hello_pre.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/PROJ(ENGLISH)/1-HELLO/Hello_pre.zip -------------------------------------------------------------------------------- /PROJ(ENGLISH)/1-HELLO/Hello_pro.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/PROJ(ENGLISH)/1-HELLO/Hello_pro.zip -------------------------------------------------------------------------------- /PROJ(ENGLISH)/1-HELLO/README: -------------------------------------------------------------------------------- 1 | This directory will elaborate how the arm9-compatible code is utilized in simulation and FPGA implementation of a simple uart-outputting-HELLO embeded project. 2 | 3 | HELLO_pre.zip ---- It is a directory attatched by KEIL example project "HELLO". 4 | HELLO_pro.zip ---- Modify UART interface for simulation and FPGA implementation. 5 | sim_hello.zip ---- the arm9-compatible code and its testbench file, you can compile them and simulate to output chars in console. 6 | chapter7.zip ---- A FPGA-implementation project based on Digilent's Nexys3 FPGA board, as a reference. 7 | -------------------------------------------------------------------------------- /PROJ(ENGLISH)/1-HELLO/chapter7.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/PROJ(ENGLISH)/1-HELLO/chapter7.zip -------------------------------------------------------------------------------- /PROJ(ENGLISH)/1-HELLO/sim_hello.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/PROJ(ENGLISH)/1-HELLO/sim_hello.zip -------------------------------------------------------------------------------- /PROJ(ENGLISH)/2-DHRY/DHRY_pre.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/PROJ(ENGLISH)/2-DHRY/DHRY_pre.zip -------------------------------------------------------------------------------- /PROJ(ENGLISH)/2-DHRY/DHRY_pro.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/PROJ(ENGLISH)/2-DHRY/DHRY_pro.zip -------------------------------------------------------------------------------- /PROJ(ENGLISH)/2-DHRY/README: -------------------------------------------------------------------------------- 1 | This directory will elaborate how the arm9-compatible code is utilized in simulation and FPGA implementation of a DHRYSTONE-measure project. Its optimazation strategy is from an ARM's application note. 2 | 3 | DHRY_pre.zip ---- It is a directory attatched by KEIL example project "HELLO". 4 | DHRY_pro.zip ---- Modify UART interface and real timer for simulation and FPGA implementation. 5 | sim_dhry.zip ---- the arm9-compatible code and its testbench file, you can compile them and simulate to output DHRYSTONE result in console. 6 | chapter8.zip ---- A FPGA-implementation project based on Digilent's Nexys3 FPGA board, as a reference. 7 | -------------------------------------------------------------------------------- /PROJ(ENGLISH)/2-DHRY/chapter8.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/PROJ(ENGLISH)/2-DHRY/chapter8.zip -------------------------------------------------------------------------------- /PROJ(ENGLISH)/2-DHRY/sim_dhry.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/PROJ(ENGLISH)/2-DHRY/sim_dhry.zip -------------------------------------------------------------------------------- /PROJ(ENGLISH)/3-uClinux/README: -------------------------------------------------------------------------------- 1 | This directory has a simulation package on how to launch uClinux with this arm9-compatible code. BIN code and debug info are from a software simulator SKYEYE. Just unzip this .zip file and compile .v files in it. uClinux launching message will be displayed in a Verilog simulator. 2 | 3 | 4 | uClinux.zip ---- A package file contained miscellaneous files on Verilog simulation. 5 | 6 | -------------------------------------------------------------------------------- /PROJ(ENGLISH)/3-uClinux/uClinux.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/PROJ(ENGLISH)/3-uClinux/uClinux.zip -------------------------------------------------------------------------------- /PROJ(ENGLISH)/4-Linux/README: -------------------------------------------------------------------------------- 1 | Mini2440 is one popular ARM9 development board. With its help, I have launched Linux in a verilog simulator. All needed files are included in one package file. This simulation process lasts 7.7s and the clock is 100MHz(10 ns), So 0.77 billion times of different instructions are available. 2 | 3 | linux.log ---- All log info displayed in the verilog simulator. 4 | linux.zip ---- The package file contains simulation files. 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /PROJ(ENGLISH)/4-Linux/linux.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/PROJ(ENGLISH)/4-Linux/linux.zip -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ARM9-compatible-soft-CPU-core 2 | This ARMv4-compatible CPU core is built in synthesiable verilog.It could launch uCLinux and Linux in MODELSIM. It has high Dhrystone benchmark value: 1.2 DMIPS/MHz. It could be utilized in your FPGA design as one submodule, if you master the interface of this .v file. This IP core is very compact. It is one .v file and has only less 1800 lines. 3 | 4 | ![Linux](https://github.com/risclite/ARM9-compatible-soft-CPU-core/blob/master/linux.png) 5 | 6 | ![uClinux](https://github.com/risclite/ARM9-compatible-soft-CPU-core/blob/master/uclinux.jpg) 7 | -------------------------------------------------------------------------------- /RTL/README: -------------------------------------------------------------------------------- 1 | arm9_compitable_code.v ------------- Original soft CPU code with all statements disorderly. 2 | arm9_compitable_code_comment.v ------------- Original soft CPU code With clear Chinese detailed comments. 3 | 4 | variant 5 | |----risclite_mx.v ------------- Compared with the original version, this file has no external interupts(IRQ/FIQ) and banked registers. It does not support MULT/MULTL instructions. If you are pulsed with the original one, start from this file. If you want to have a simpler soft CPU code, this version is suitable except for avoiding multiply instructions. 6 | |----risclite_mx_mult.v -------------No external interrupts support and banked registers, but support MULT/MULTL instructions. 7 | -------------------------------------------------------------------------------- /RTL/arm9_compitable_code_comment.v: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/RTL/arm9_compitable_code_comment.v -------------------------------------------------------------------------------- /RTL/variant/risclite_mx.v: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/RTL/variant/risclite_mx.v -------------------------------------------------------------------------------- /RTL/variant/risclite_mx_mult.v: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/RTL/variant/risclite_mx_mult.v -------------------------------------------------------------------------------- /TRAINING(CHINESE)/PPT/1 FPGA设计基础.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/TRAINING(CHINESE)/PPT/1 FPGA设计基础.pptx -------------------------------------------------------------------------------- /TRAINING(CHINESE)/PPT/2 RTL设计方法学.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/TRAINING(CHINESE)/PPT/2 RTL设计方法学.pptx -------------------------------------------------------------------------------- /TRAINING(CHINESE)/PPT/3 UART串口设计实例.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/TRAINING(CHINESE)/PPT/3 UART串口设计实例.pptx -------------------------------------------------------------------------------- /TRAINING(CHINESE)/PPT/3 rxtx.v: -------------------------------------------------------------------------------- 1 | `define DEL 3 2 | module rxtx 3 | #(parameter baud = 9600, 4 | mhz = 25 5 | ) 6 | ( 7 | clk, 8 | rst, 9 | rx, 10 | tx_vld, 11 | tx_data, 12 | 13 | rx_vld, 14 | rx_data, 15 | tx, 16 | txrdy 17 | ); 18 | 19 | input clk; 20 | input rst; 21 | input rx; 22 | input tx_vld; 23 | input [7:0] tx_data; 24 | 25 | output rx_vld; 26 | output [7:0] rx_data; 27 | output tx; 28 | output txrdy; 29 | 30 | /***********************************/ 31 | reg rx_dly; 32 | reg [13:0] rx_cnt; 33 | reg data_vld; 34 | reg [3:0] data_cnt; 35 | reg rx_vld; 36 | reg [7:0] rx_data; 37 | reg [7:0] tx_rdy_data; 38 | reg tran_vld; 39 | reg [3:0] tran_cnt; 40 | reg tx; 41 | wire txrdy; 42 | /***********************************/ 43 | wire rx_change; 44 | wire rx_en; 45 | 46 | /***********************************/ 47 | 48 | localparam period = (mhz*1000000)/baud, 49 | half = period/2; 50 | 51 | reg rx1,rx2,rx3,rxx; 52 | always @ ( posedge clk ) begin 53 | rx1 <= #`DEL rx; 54 | rx2 <= #`DEL rx1; 55 | rx3 <= #`DEL rx2; 56 | rxx <= #`DEL rx3; 57 | end 58 | 59 | 60 | always @ ( posedge clk ) 61 | rx_dly <= #`DEL rxx; 62 | 63 | assign rx_change = (rxx != rx_dly ); 64 | 65 | always @ ( posedge clk or posedge rst ) 66 | if ( rst ) 67 | rx_cnt <= #`DEL 0; 68 | else if ( rx_change | ( rx_cnt==period ) ) 69 | rx_cnt <= #`DEL 0; 70 | else 71 | rx_cnt <= #`DEL rx_cnt + 1'b1; 72 | 73 | assign rx_en = ( rx_cnt==half ); 74 | 75 | always @ ( posedge clk or posedge rst ) 76 | if ( rst ) 77 | data_vld <= #`DEL 1'b0; 78 | else if ( rx_en & ~rxx & ~data_vld ) 79 | data_vld <= #`DEL 1'b1; 80 | else if ( data_vld & ( data_cnt==4'h9 ) & rx_en ) 81 | data_vld <= #`DEL 1'b0; 82 | else; 83 | 84 | always @ ( posedge clk or posedge rst ) 85 | if ( rst ) 86 | data_cnt <= #`DEL 4'b0; 87 | else if ( data_vld ) 88 | if ( rx_en ) 89 | data_cnt <= #`DEL data_cnt + 1'b1; 90 | else; 91 | else 92 | data_cnt <= #`DEL 4'b0; 93 | 94 | always @ ( posedge clk or posedge rst ) 95 | if ( rst ) 96 | rx_data <= #`DEL 7'b0; 97 | else if ( data_vld & rx_en & ~data_cnt[3] ) 98 | rx_data <= #`DEL {rxx,rx_data[7:1]}; 99 | else; 100 | 101 | always @ ( posedge clk or posedge rst ) 102 | if ( rst ) 103 | rx_vld <= #`DEL 1'b0; 104 | else 105 | rx_vld <= #`DEL data_vld & rx_en & ( data_cnt==4'h9); 106 | 107 | always @ ( posedge clk or posedge rst ) 108 | if ( rst ) 109 | tx_rdy_data <= #`DEL 8'b0; 110 | else if ( tx_vld & txrdy ) 111 | tx_rdy_data <= #`DEL tx_data; 112 | else; 113 | 114 | always @ ( posedge clk or posedge rst ) 115 | if ( rst ) 116 | tran_vld <= #`DEL 1'b0; 117 | else if ( tx_vld ) 118 | tran_vld <= #`DEL 1'b1; 119 | else if ( tran_vld & rx_en & ( tran_cnt== 4'd10 ) ) 120 | tran_vld <= #`DEL 1'b0; 121 | else; 122 | 123 | always @ ( posedge clk or posedge rst ) 124 | if ( rst ) 125 | tran_cnt <= #`DEL 4'b0; 126 | else if ( tran_vld ) 127 | if( rx_en ) 128 | tran_cnt <= #`DEL tran_cnt + 1'b1; 129 | else; 130 | else 131 | tran_cnt <= #`DEL 4'b0; 132 | 133 | always @ ( posedge clk or posedge rst ) 134 | if ( rst ) 135 | tx <= #`DEL 1'b1; 136 | else if ( tran_vld ) 137 | if ( rx_en ) 138 | case ( tran_cnt ) 139 | 4'd0 : tx <= #`DEL 1'b0; 140 | 4'd1 : tx <= #`DEL tx_rdy_data[0]; 141 | 4'd2 : tx <= #`DEL tx_rdy_data[1]; 142 | 4'd3 : tx <= #`DEL tx_rdy_data[2]; 143 | 4'd4 : tx <= #`DEL tx_rdy_data[3]; 144 | 4'd5 : tx <= #`DEL tx_rdy_data[4]; 145 | 4'd6 : tx <= #`DEL tx_rdy_data[5]; 146 | 4'd7 : tx <= #`DEL tx_rdy_data[6]; 147 | 4'd8 : tx <= #`DEL tx_rdy_data[7]; 148 | 4'd9: tx <= #`DEL ^tx_rdy_data; 149 | 4'd10: tx <= #`DEL 1'b1; 150 | default: tx <= #`DEL 1'b1; 151 | endcase 152 | else; 153 | else 154 | tx<= #`DEL 1'b1; 155 | 156 | assign txrdy = ~tran_vld; 157 | 158 | 159 | endmodule 160 | -------------------------------------------------------------------------------- /TRAINING(CHINESE)/PPT/4 ARM9架构剖析.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/TRAINING(CHINESE)/PPT/4 ARM9架构剖析.pptx -------------------------------------------------------------------------------- /TRAINING(CHINESE)/PPT/5 ARM9中断.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/TRAINING(CHINESE)/PPT/5 ARM9中断.pptx -------------------------------------------------------------------------------- /TRAINING(CHINESE)/PPT/6 ARM9指令集.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/TRAINING(CHINESE)/PPT/6 ARM9指令集.pptx -------------------------------------------------------------------------------- /TRAINING(CHINESE)/PPT/7 流水线架构解析.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/TRAINING(CHINESE)/PPT/7 流水线架构解析.pptx -------------------------------------------------------------------------------- /TRAINING(CHINESE)/PPT/8 针对ARM9的设计架构.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/TRAINING(CHINESE)/PPT/8 针对ARM9的设计架构.pptx -------------------------------------------------------------------------------- /TRAINING(CHINESE)/PPT/9 兼容ARM9的处理器架构实现.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/TRAINING(CHINESE)/PPT/9 兼容ARM9的处理器架构实现.pptx -------------------------------------------------------------------------------- /TRAINING(CHINESE)/PPT/a 兼容ARM9的软核处理器RTL设计.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/TRAINING(CHINESE)/PPT/a 兼容ARM9的软核处理器RTL设计.pptx -------------------------------------------------------------------------------- /TRAINING(CHINESE)/PPT/arm9_compitable_code_comment.v: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/TRAINING(CHINESE)/PPT/arm9_compitable_code_comment.v -------------------------------------------------------------------------------- /TRAINING(CHINESE)/PPT/b RISC处理器设计展望.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/TRAINING(CHINESE)/PPT/b RISC处理器设计展望.pptx -------------------------------------------------------------------------------- /TRAINING(CHINESE)/PPT/c采用处理器软核的SoC设计.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/TRAINING(CHINESE)/PPT/c采用处理器软核的SoC设计.pptx -------------------------------------------------------------------------------- /TRAINING(CHINESE)/PPT/d ARM7TDMI介绍.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/TRAINING(CHINESE)/PPT/d ARM7TDMI介绍.pptx -------------------------------------------------------------------------------- /TRAINING(CHINESE)/PPT/e ARM7TDMI单片机运行uClinux.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/TRAINING(CHINESE)/PPT/e ARM7TDMI单片机运行uClinux.pptx -------------------------------------------------------------------------------- /TRAINING(CHINESE)/PPT/f ARM920T为核心的mini2440开发板.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/TRAINING(CHINESE)/PPT/f ARM920T为核心的mini2440开发板.pptx -------------------------------------------------------------------------------- /TRAINING(CHINESE)/WEB/chapter2/rxtx.v: -------------------------------------------------------------------------------- 1 | `define DEL 3 2 | module rxtx 3 | #(parameter baud = 9600, 4 | mhz = 25 5 | ) 6 | ( 7 | clk, 8 | rst, 9 | rx, 10 | tx_vld, 11 | tx_data, 12 | 13 | rx_vld, 14 | rx_data, 15 | tx, 16 | txrdy 17 | ); 18 | 19 | input clk; 20 | input rst; 21 | input rx; 22 | input tx_vld; 23 | input [7:0] tx_data; 24 | 25 | output rx_vld; 26 | output [7:0] rx_data; 27 | output tx; 28 | output txrdy; 29 | 30 | /***********************************/ 31 | reg rx_dly; 32 | reg [13:0] rx_cnt; 33 | reg data_vld; 34 | reg [3:0] data_cnt; 35 | reg rx_vld; 36 | reg [7:0] rx_data; 37 | reg [7:0] tx_rdy_data; 38 | reg tran_vld; 39 | reg [3:0] tran_cnt; 40 | reg tx; 41 | wire txrdy; 42 | /***********************************/ 43 | wire rx_change; 44 | wire rx_en; 45 | 46 | /***********************************/ 47 | 48 | localparam period = (mhz*1000000)/baud, 49 | half = period/2; 50 | 51 | reg rx1,rx2,rx3,rxx; 52 | always @ ( posedge clk ) begin 53 | rx1 <= #`DEL rx; 54 | rx2 <= #`DEL rx1; 55 | rx3 <= #`DEL rx2; 56 | rxx <= #`DEL rx3; 57 | end 58 | 59 | 60 | always @ ( posedge clk ) 61 | rx_dly <= #`DEL rxx; 62 | 63 | assign rx_change = (rxx != rx_dly ); 64 | 65 | always @ ( posedge clk or posedge rst ) 66 | if ( rst ) 67 | rx_cnt <= #`DEL 0; 68 | else if ( rx_change | ( rx_cnt==period ) ) 69 | rx_cnt <= #`DEL 0; 70 | else 71 | rx_cnt <= #`DEL rx_cnt + 1'b1; 72 | 73 | assign rx_en = ( rx_cnt==half ); 74 | 75 | always @ ( posedge clk or posedge rst ) 76 | if ( rst ) 77 | data_vld <= #`DEL 1'b0; 78 | else if ( rx_en & ~rxx & ~data_vld ) 79 | data_vld <= #`DEL 1'b1; 80 | else if ( data_vld & ( data_cnt==4'h9 ) & rx_en ) 81 | data_vld <= #`DEL 1'b0; 82 | else; 83 | 84 | always @ ( posedge clk or posedge rst ) 85 | if ( rst ) 86 | data_cnt <= #`DEL 4'b0; 87 | else if ( data_vld ) 88 | if ( rx_en ) 89 | data_cnt <= #`DEL data_cnt + 1'b1; 90 | else; 91 | else 92 | data_cnt <= #`DEL 4'b0; 93 | 94 | always @ ( posedge clk or posedge rst ) 95 | if ( rst ) 96 | rx_data <= #`DEL 7'b0; 97 | else if ( data_vld & rx_en & ~data_cnt[3] ) 98 | rx_data <= #`DEL {rxx,rx_data[7:1]}; 99 | else; 100 | 101 | always @ ( posedge clk or posedge rst ) 102 | if ( rst ) 103 | rx_vld <= #`DEL 1'b0; 104 | else 105 | rx_vld <= #`DEL data_vld & rx_en & ( data_cnt==4'h9); 106 | 107 | always @ ( posedge clk or posedge rst ) 108 | if ( rst ) 109 | tx_rdy_data <= #`DEL 8'b0; 110 | else if ( tx_vld & txrdy ) 111 | tx_rdy_data <= #`DEL tx_data; 112 | else; 113 | 114 | always @ ( posedge clk or posedge rst ) 115 | if ( rst ) 116 | tran_vld <= #`DEL 1'b0; 117 | else if ( tx_vld ) 118 | tran_vld <= #`DEL 1'b1; 119 | else if ( tran_vld & rx_en & ( tran_cnt== 4'd10 ) ) 120 | tran_vld <= #`DEL 1'b0; 121 | else; 122 | 123 | always @ ( posedge clk or posedge rst ) 124 | if ( rst ) 125 | tran_cnt <= #`DEL 4'b0; 126 | else if ( tran_vld ) 127 | if( rx_en ) 128 | tran_cnt <= #`DEL tran_cnt + 1'b1; 129 | else; 130 | else 131 | tran_cnt <= #`DEL 4'b0; 132 | 133 | always @ ( posedge clk or posedge rst ) 134 | if ( rst ) 135 | tx <= #`DEL 1'b1; 136 | else if ( tran_vld ) 137 | if ( rx_en ) 138 | case ( tran_cnt ) 139 | 4'd0 : tx <= #`DEL 1'b0; 140 | 4'd1 : tx <= #`DEL tx_rdy_data[0]; 141 | 4'd2 : tx <= #`DEL tx_rdy_data[1]; 142 | 4'd3 : tx <= #`DEL tx_rdy_data[2]; 143 | 4'd4 : tx <= #`DEL tx_rdy_data[3]; 144 | 4'd5 : tx <= #`DEL tx_rdy_data[4]; 145 | 4'd6 : tx <= #`DEL tx_rdy_data[5]; 146 | 4'd7 : tx <= #`DEL tx_rdy_data[6]; 147 | 4'd8 : tx <= #`DEL tx_rdy_data[7]; 148 | 4'd9: tx <= #`DEL ^tx_rdy_data; 149 | 4'd10: tx <= #`DEL 1'b1; 150 | default: tx <= #`DEL 1'b1; 151 | endcase 152 | else; 153 | else 154 | tx<= #`DEL 1'b1; 155 | 156 | assign txrdy = ~tran_vld; 157 | 158 | 159 | endmodule 160 | -------------------------------------------------------------------------------- /TRAINING(CHINESE)/WEB/chapter3/uart.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/TRAINING(CHINESE)/WEB/chapter3/uart.zip -------------------------------------------------------------------------------- /TRAINING(CHINESE)/WEB/chapter4/MiniComm.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/TRAINING(CHINESE)/WEB/chapter4/MiniComm.exe -------------------------------------------------------------------------------- /TRAINING(CHINESE)/WEB/chapter4/chapter41.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/TRAINING(CHINESE)/WEB/chapter4/chapter41.zip -------------------------------------------------------------------------------- /TRAINING(CHINESE)/WEB/chapter4/chapter42.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/TRAINING(CHINESE)/WEB/chapter4/chapter42.zip -------------------------------------------------------------------------------- /TRAINING(CHINESE)/WEB/chapter5/arm9.xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/TRAINING(CHINESE)/WEB/chapter5/arm9.xls -------------------------------------------------------------------------------- /TRAINING(CHINESE)/WEB/chapter6/arm9_compitable_code_comment.v: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/TRAINING(CHINESE)/WEB/chapter6/arm9_compitable_code_comment.v -------------------------------------------------------------------------------- /TRAINING(CHINESE)/WEB/chapter7/Hello_pre.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/TRAINING(CHINESE)/WEB/chapter7/Hello_pre.zip -------------------------------------------------------------------------------- /TRAINING(CHINESE)/WEB/chapter7/Hello_pro.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/TRAINING(CHINESE)/WEB/chapter7/Hello_pro.zip -------------------------------------------------------------------------------- /TRAINING(CHINESE)/WEB/chapter7/chapter7.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/TRAINING(CHINESE)/WEB/chapter7/chapter7.zip -------------------------------------------------------------------------------- /TRAINING(CHINESE)/WEB/chapter7/sim_hello.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/TRAINING(CHINESE)/WEB/chapter7/sim_hello.zip -------------------------------------------------------------------------------- /TRAINING(CHINESE)/WEB/chapter8/DHRY_pre.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/TRAINING(CHINESE)/WEB/chapter8/DHRY_pre.zip -------------------------------------------------------------------------------- /TRAINING(CHINESE)/WEB/chapter8/DHRY_pro.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/TRAINING(CHINESE)/WEB/chapter8/DHRY_pro.zip -------------------------------------------------------------------------------- /TRAINING(CHINESE)/WEB/chapter8/chapter8.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/TRAINING(CHINESE)/WEB/chapter8/chapter8.zip -------------------------------------------------------------------------------- /TRAINING(CHINESE)/WEB/chapter8/sim_dhry.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/TRAINING(CHINESE)/WEB/chapter8/sim_dhry.zip -------------------------------------------------------------------------------- /TRAINING(CHINESE)/WEB/chapter9/uclinux.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/TRAINING(CHINESE)/WEB/chapter9/uclinux.jpg -------------------------------------------------------------------------------- /TRAINING(CHINESE)/WEB/chapter9/uclinux.rar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/TRAINING(CHINESE)/WEB/chapter9/uclinux.rar -------------------------------------------------------------------------------- /TRAINING(CHINESE)/WEB/chapterA/linux.rar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/TRAINING(CHINESE)/WEB/chapterA/linux.rar -------------------------------------------------------------------------------- /TRAINING(CHINESE)/WEB/risclite - 《兼容ARM9的软核处理器设计:基于FPGA》的配套教程下载 - Google Project Hosting.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 33 | 34 | 35 | 36 | risclite - 37 | 38 | 39 | 《兼容ARM9的软核处理器设计:基于FPGA》的配套教程下载 - Google Project Hosting 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 51 | 85 | 86 | 87 | 96 |
97 | 98 |
99 | 100 | 101 | 102 | 103 | My favorites 104 | | Sign in 105 | 106 | 107 | 108 |
109 | 110 |
111 |
112 | 113 | 114 |
115 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 137 | 138 | 151 | 160 |
139 | 140 |
141 | risclite 142 |
143 | 144 | 148 | 149 | 150 |
152 | 153 |
154 | 155 | 156 | 157 |
158 | 159 |
161 | 162 |
163 | 164 | 165 |
166 | Project Home 167 | 168 | 169 | 170 | 171 | Downloads 172 | 173 | 174 | 175 | 176 | 177 | Wiki 178 | 179 | 180 | 181 | 182 | 183 | Issues 184 | 185 | 186 | 187 | 188 | 189 | Source 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 |
198 |
199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 228 | 229 | 230 | 231 | 232 |
210 |
211 |
212 | 213 | Summary 214 | 215 | 216 | 217 | 218 |   219 | 220 | People 221 | 222 | 223 | 224 |
225 |
226 | 227 |
233 | 234 | 235 | 239 |
240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 345 | 348 | 349 |
251 | 252 |
Project Information
253 | 254 | 255 |
256 | 257 |
258 | 259 | 260 |
    261 | 262 | 263 | 264 |
  • 265 | Project feeds 266 |
  • 267 | 268 |
  • 269 | 270 | 271 | 272 |
  • Code license
  • 273 |
  • 274 | GNU GPL v3 275 | 276 |
  • 277 |
  • 278 | 279 | 280 | 281 | 282 | 283 | 284 |
  • 285 | 286 | Labels
    287 | 288 | ARM 289 | 290 |
    291 |
  • 292 |
  • 293 | 294 | 295 |
296 |
297 |
298 |
299 |
300 | Members 301 |
302 | 317 | 318 | 319 | 320 | 321 |
Links
322 |
    323 | 324 |
  • Blogs
  • 325 | 326 |
  • 327 | RISClite 328 |
  • 329 | 330 |
  • 331 | 332 | 333 |
  • External links
  • 334 | 335 |
  • 336 | SoCVista论坛 337 |
  • 338 | 339 |
  • 340 | 341 | 342 |
343 | 344 |
346 |

本项目为一本关于FPGA设计的书——《兼容ARM9的软核处理器设计:基于FPGA》提供配套教程下载。该书由机械工业出版社华章分社出版。读者可以在这里找到书中对应的设计文件。

第一章: 数字电路设计模型

本章主要讲述数字电路设计的基本模型。在进行数字电路设计之前,必须建立一个数字电路模型。这个建模的过程,就是在心中建立一个电路的基本轮廓。在了解了数字电路的基本单元后,运用它们构建大致模型。

  1. 最初的模型——带有输入输出的模块
  2. 组合逻辑
  3. 时序逻辑
  4. 同步电路
  5. 同步电路时序路径
  6. RTL描述
  7. 综合生成电路

这一章建立数字电路设计的基本概念,是非常基础性的内容,无下载文件。

第二章:Verilog RTL编程

本章讲述如何使用Verilog进行RTL编程,讲述如何使用Verilog精炼的进行RTL描述。在对Verilog的描述方法进行了基本归类后,总结了进行RTL设计的基本流程,并在最后,使用一个简单的UART串口设计实例来启发读者完成RTL设计。

  1. Verilog语言与RTL描述
  2. Verilog描述语句对应电路
  3. 如何进行RTL设计
  4. RTL设计要点
  5. UART串口通讯设计实例

本章使用Verilog设计了一个简单高效的UART控制器。作者已经对它进行了参数化。读者只需要在例化时,指出串口的波特率(波特/秒),以及开发板的工作频率(兆赫兹),即可用在自己的设计当中。下面就是它的例化方式,从这段参数化可以理解设计的参数:它支持的波特率是9600波特/秒,rxtx.v的clk端口的时钟频率是25 MHz。

rxtx 
 
# ( .baud ( 9600 ),
     
.mhz  ( 25   )  
)
u_rxtx
( ... );

它的下载方式:rxtx.v

这段串口控制器的Verilog RTL代码只有简单的100来行,非常简单实用,适于在开发板上调试使用。推荐各位读者在理解它的功能的基础上进行修改,一定会让你用开发板进行串口调试时更加得心应手。

这个rxtx.v现在支持的配置方式是:8 bit数据位,1 bit奇偶校验位,它的奇偶校验方式偶校验,以及1 bit的停止位。读者在配置PC端的控制终端时,可以按照上面的描述去配置。也可以修改代码以满足你特定的需求。

第三章:Modelsim仿真

本章讲述如何使用Modelsim对Verilog RTL设计进行仿真验证。验证是设计中重要的一步,Modelsim是最流行的仿真工具,使用Modelsim建立一个测试环境可以对RTL设计进行各种级别的验证测试。

  1. 仿真的意义
  2. testbench文件
  3. Modelsim仿真工具使用
  4. UART串口仿真实例

本章讲述如何使用Modelsim进行设计仿真。但也可以使用开源的iVerilog仿真工具完成。它的下载方式是:iVerilog下载页。读者在安装完毕后,下载本章设计的tb.v和rxtx.v,链接是:uart.zip。在解压缩某个目录,例如D:\sim下后。在windows的“开始”下面,点击“运行”,然后输入cmd,点击确定。在cmd页面内,输入命令:"D:",以及"cd sim"进入解压缩目录。

如果安装正确的话,只需要输入:iverilog tb.v rxtx.v -o run,就会生成一个可执行的仿真文件:run。然后,输入vvp run,即可让刚刚生成的run进行执行,那么tb.v里面的打印语句就会在cmd窗口中输出。

如果你想生成波形,很简单,打开tb.v,在endmodule语句前面加上:

initial
begin
        $dumpfile
("tb.lxt2");
        $dumpvars
(0);
end

然后保存tb.v。重新运行iverilog tb.v rxtx.v -o run,重新得到run文件。然后运行vvp run -lxt2,那么就得到lxt2格式的波形文件:tb.lxt2。最后在cmd窗口中,运行gtkwave tb.lxt2,就可以进入波形观察窗口,拉入自己想要的信号,仔细分析吧。具体也可以参照博文:使用iverilog+gtkwave学习Verilog HDL

第四章:FPGA开发板原型验证

本章主要讲述如何使用FPGA开发板对设计进行原型验证。FPGA开发板作为数字设计运行的实体,具有实践出真理的价值。掌握FPGA开发板对设计进行验证,对于设计者无比重要。

  1. FPGA内部结构
  2. FPGA开发板
  3. FPGA设计开发流程
  4. FPGA设计内部单元
  5. UART设计在Altera FPGA的下载执行
  6. UART设计在Xilinx FPGA的下载执行

这一章有两个FPGA开发板运行的工程。一个针对Altera的DE2-115开发板,一个是Digilent的Starter kit开发板。这里提供的运行例程,只针对作者手头的Digilent公司的Nexys3开发板。这两个工程都会用到串口终端。读者当然可以使用xp系统自带的“超级终端”,但很多win7用户或觉得“超级终端”不给力的,可以下载作者提供的一个简单易用的串口终端软件:迷你终端。(注:在进行串口设置时,建议将“流量控制”设为“无”)

第一个FPGA开发板工程,使用前面两章的串口控制器,把接收到的数据+1后,发送回串口中。在书中使用的是Altera公司的DE2-115开发板。这里提供的是:Nexys3开发板的工程数据包

第二个FPGA开发板工程,会把“迷你终端”发送的数据,保存入FPGA内部的Block RAM内,在开发者按动某个按钮后,顺序把保存的数据通过串口回送入“迷你终端”。在书中使用的是Digilent的starter kit开发板。这里提供的是:Nexys3开发板的工程数据包

第五章:ARM9微处理器编程模型

本章主要对ARM9处理器架构进行介绍,使读者对ARMv4这一套运行在众多智能手机上的流行架构有个切实的了解。本章从建立微处理器的基本模型开始,从实现的角度对ARMv4架构的方方面面进行了探讨。在总结出了7种中断和20条指令后,对于下一章执行做了全面的总结和铺垫。

  1. ARM公司历史
  2. ARM处理器架构
  3. 微处理器基本模型
  4. ARMv4架构模式
  5. ARMv4架构内部寄存器
  6. ARMv4架构的异常中断
  7. ARMv4的架构支持的ARM指令集
  8. ARM指令与中断分析

这里提供ARMv4的指令集对照表(excel格式)。读者可以对指令集的区分一目了然,下载地址:arm9.xls

第六章:兼容ARM9微处理器Verilog RTL设计

本章是本书的核心。讲述了如何在不到1800行的verilog程序里,去实现上一章总结的ARMv4的架构。从现在经典的三级流水线和五级流水线开,对如何有效的实现处理器描述做了全面展开。以此为基础,逐步对兼容ARM9微处理器进行剖析,让读者从处理器内核的实现过程中,学习到Verilog RTL设计的各种技巧。

  1. 确定RTL设计的输入输出端口
  2. 经典的三级流水线架构
  3. 经典的五级流水线架构
  4. 三级流水线改进架构
  5. 适于兼容ARM9微处理器的三级架构
  6. 影响流水线架构执行的四种状况
  7. 第一级:取指阶段的Verilog RTL实现
  8. 第二级:乘法运算阶段的Verilog RTL实现
  9. 第三级:加法运算阶段的Verilog RTL实现
  10. 寄存器组的写入
  11. CPSR/SPSR的写入
  12. 数据池的读写
  13. 第四级:读操作数据的回写

这里提供这一章设计的Verilog RTL代码下载:兼容ARM9软核处理器Verilog RTL代码

第七章:Hello world--兼容ARM9处理器内核运行的第一个程序

本章介绍简单的ROM code生成流程,并让它在兼容ARM9处理器内核上运行。KEIL是嵌入式开发中流行的工具,它的后续RealView MDK也因为它良好的特性受到嵌入式设计工程师的欢迎。本章帮助读者编写简单的printf("Hello world")打印程序,以此为契机,建立简单的SoC设计工程。

  1. 基于FPGA的SoC设计流程
  2. 使用RealView MDK编译Hello World程序
  3. Modelsim仿真输出Hello World
  4. 建立Hello World的FPGA设计工程

这一章使用ARM公司的Keil RealView MDK作为嵌入式软件开发工具。读者只需在评估版下载页面上填写个人信息,即可下载该软件的评估版,可以产生小于32 KB大小的ROM code。

在安装完毕Keil RealView MDK后,在安装目录下,会找到examples目录。在这个目录里面,会有Hello子目录,里面放着一个简单的hello world打印项目。读者可以从这里下载。读者可以按照书中的指导,对hello项目进行修改,也可以在这里直接下载修改后的Hello项目

在准备了ROM code后,我们进入仿真阶段。书中采用的是Modelsim作为仿真工具,这里却使用前面提到的iVerilog开源仿真工具。读者下载仿真包,里面包含了两个简单的文件:tb.v和arm9_compatiable_code.v。读者需要打开tb.v,对里面的parameter BINFILE = "D:/keil/Hello/Obj/hello.bin";语句进行修改,使得仿真获取的bin文件指向读者在hello目录下生成的hello.bin。

修改tb.v结束后,打开cmd界面,进入sim_hello.zip的解压缩目录。然后运行:iverilog tb.v arm9_compatiable_code.v -o run;最后运行vvp run,即可见到打印出hello world字样。由于tb.v里没有自动结束语句,读者需要输入ctrl+C键,然后输入finish,强制结束。读者接下来要做的是,对hello工程的源文件hello.c进行修改,打印出你想要的字符串。在Keil RealView MDK进行重编译后,只需运行vvp run,即可打印出你想要的字符串。接下来,读者可以按照书中的指导,使得仿真支持中断,这里,不再提供参考。

如果你能够进行仿真,那么在FPGA开发板上执行将是顺理成章、水到渠成的事情了。这里,提供在Nexys3开发板上的例子,它是上面仿真的翻版。在这个例子里,采用了Block RAM作为ROM和RAM,使用前面开发的串口程序。读者可以下载这个FPGA工程,作为你在FPGA开发板上执行打印hello world的一个参考。下载地址:hello world在Nexys3开发板上的例程。建议读者在这个例子的基础上逐步增加一些自己的东西,例如中断的执行,打印一些其他异常符号等等。

第八章:Dhrystone Benchmark--兼容ARM9处理器内核性能测试

Dhrystone Benchmark是为各种嵌入式内核测试“体质”的代码。本章结合ARM公司给出的优化方法,使用RealView MDK对Dhrystone 2.1代码进行编译。然后使用Modelsim进行仿真,并用FPGA开发板结合串口,打印出真实的测试结果。

  1. Dhrystone 2.1介绍
  2. 移植Dhrystone 2.1进行编译
  3. Modelsim仿真运行Dhrystone Benchmark
  4. 在线可编程的FPGA SoC设计工程
  5. Dhrystone Benchmark在开发板中运行

同上一章一样,本章也将使用Keil RealView MDK自带的Dhrystone 2.1测试项目,对兼容ARM9软核处理器进行测试。读者可以再这里下载DHRY的源项目。然后,按照书中的指导,对它进行修改,让它更加适于兼容ARM9软核处理器,也可直接在这里下载修改后的DHRY项目

在编译了软件后,读者可以按照上一章的方法对它进行仿真。仿真文件包里面包含了一个tb.v,以及arm9_compatiable_code.v,它的下载方式:DHRY仿真包。使用iverilog仿真软件对该仿真包进行仿真,可能需要十来分钟。最后的DMIPS/MHz结果,也会随着Keil的版本不同而不同。例如,作者采用最新的Keil 4.23版,将得到Dhrystone 2.1的DMIPS/MHz结果为:1.16 DMIPS/MHz。在写作此书时,作者采用的是4.10版本,那时的DMIPS/MHz结果为:1.21 DMIPS/MHz。

同上一章一样,经过仿真以后,在FPGA开发板上重现这一测试过程。作者给出一个参考例程:Nexys3开发板上的Dhrystone 2.1测试项目

第九章:ucLinux仿真--结合Skyeye,启动不带MMU的操作系统

Skyeye是ARM9处理器的软件模拟器,通过它解析ucLinux内核,可以在软件平台上运行嵌入式软件。本章建立了Modelsim的仿真环境,加载同样的ucLinux内核,可以打印出同Skyeye一样的启动信息。在这个过程中,用户可以通过查看波形,从RTL设计工程师的角度解析嵌入式操作系统。

  1. ARM7TDMI-S处理器内核
  2. 以ARM7TDMI为核心的单片机
  3. uClinux嵌入式操作系统
  4. SkyEye硬件模拟平台
  5. Modelsim下仿真uClinux启动过程

本章将在仿真器中启动uClinux操作系统。这个启动过程以软件模拟器SkyEye为参考,整个仿真包已经发布在网上了,下面是链接地址:uClinux仿真包

第十章:Linux OS--结合mini2440开发板,启动带MMU的嵌入式操作系统

Mini2440 ARM9开发板是一种流行的嵌入式开发工具。本章从开发板中得到含有操作系统及文件系统的NAND flash的镜像,然后在Modelsim下建立testbench环境,从该镜像中读出bootloader的第一条指令开始,一步步的启动Linux操作系统。这个过程涉及到带MMU功能模块的处理器的工作机理,读者在本章中可以了解到Linux操作系统的硬件工作环境。

  1. ARM920T处理器内核
  2. S3C2440A 32-bit微控制器
  3. Mini2440 ARM9开发板
  4. NAND flash仿真模型
  5. 为兼容ARM9处理器内核增加协处理器指令
  6. 建立仿真Linux操作系统的testbench

Mini2440是由广州友善之臂计算机科技有限公司推出的一块基于ARM9的开发板。本章完全参照它的启动过程。仿真包也已经发布在网上,下载地址是:Linux操作系统仿真包

谢谢大家购买我的书!希望大家学习愉快!

347 |
350 | 351 | 354 | 355 | 356 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 364 |
365 | 372 |
373 | Powered by Google Project Hosting 374 |
375 | 376 | 377 | 378 | 379 | 380 | 381 | 382 | 383 | -------------------------------------------------------------------------------- /TRAINING(CHINESE)/WEB/risclite - 《兼容ARM9的软核处理器设计:基于FPGA》的配套教程下载 - Google Project Hosting_files/codesite_product_dictionary_ph.pack.04102009.js: -------------------------------------------------------------------------------- 1 | window['CS_productDictionary'] = {"plus":{"title":"Google+ Platform","url":"https://developers.google.com/+"},"customsearchads":{"title":"AdSense Custom Search Ads","url":"/apis/custom-search-ads/"},"chart":{"title":"Chart Tools","url":"/apis/chart/"},"android":{"title":"Android","url":"/android/"},"gdata":{"title":"Google Data Protocol","url":"/apis/gdata/"},"blogger":{"title":"Blogger Data API","url":"/apis/blogger/"},"chrome":{"title":"Google Chrome","url":"/chrome/"},"chromium":{"title":"Chromium","url":"/chromium/"},"chromeframe":{"title":"Google Chrome Frame","url":"/chrome/chromeframe/"},"chromeextensions":{"title":"Google Chrome Extensions","url":"/chrome/extensions/"},"chromeapps":{"title":"Installable Web Apps","url":"/chrome/apps/"},"chromewebstore":{"title":"Chrome Web Store","url":"/chrome/webstore/"},"chromedevtools":{"title":"Chrome Developer Tools","url":"/chrome/devtools/"},"accounts":{"title":"Google Account Authentication","url":"/apis/accounts/"},"adsense":{"title":"Google AdSense Host API","url":"/apis/adsense/"},"adsensemanage":{"title":"Google AdSense Management API","url":"/apis/adsense/management/"},"adwords":{"title":"Google AdWords API","url":"/apis/adwords/"},"ajaxfeeds":{"title":"Google Feed API","url":"/apis/feed/"},"libraries":{"title":"Google Libraries API","url":"/apis/libraries/"},"analytics":{"title":"Google Analytics","url":"/apis/analytics/"},"appengine":{"title":"Google App Engine","url":"/appengine/"},"appsscript":{"title":"Google Apps Script","url":"/googleapps/appsscript/"},"storage":{"title":"Google Cloud Storage","url":"/apis/storage/"},"predict":{"title":"Google Prediction API","url":"/apis/predict/"},"bigquery":{"title":"BigQuery","url":"/apis/bigquery/"},"googleapps":{"title":"Google Apps","url":"/googleapps/"},"marketplace":{"title":"Google Apps Marketplace","url":"/googleapps/marketplace/"},"gmail":{"title":"Gmail APIs and Tools","url":"/apis/gmail/"},"books":{"title":"Google Books API Family","url":"/apis/books/"},"calendar":{"title":"Google Calendar APIs and Tools","url":"/apis/calendar/"},"checkout":{"title":"Google Checkout","url":"/apis/checkout/"},"closure":{"title":"Closure Tools","url":"/closure/"},"cloudprint":{"title":"Google Cloud Print","url":"/apis/cloudprint/"},"cloudsql":{"title":"Google Cloud SQL","url":"/apis/sql/"},"commercesearch":{"title":"Google Commerce Search","url":"/apis/commercesearch/"},"customsearch":{"title":"Google Custom Search API","url":"/apis/customsearch/"},"contacts":{"title":"Google Contacts APIs","url":"/apis/contacts/"},"contentapishopping":{"title":"Google Content API for Shopping","url":"/apis/shopping/content/"},"desktop":{"title":"Google Desktop APIs","url":"/apis/desktop/"},"apidiscovery":{"title":"Google API Discovery Service","url":"/apis/discovery/"},"dfa":{"title":"Google's DoubleClick for Advertisers","url":"/apis/dfa/"},"dfp":{"title":"Google's DoubleClick for Publishers","url":"/apis/dfp/"},"documents":{"title":"Google Documents List Data API","url":"/apis/documents/"},"ima":{"title":"Google Interactive Media Ads","url":"/apis/ima/"},"inapppayments":{"title":"Google In-App Payments API for the Web","url":"/apis/inapppayments/"},"earth":{"title":"Google Earth API","url":"/apis/earth/"},"eclipse":{"title":"Google Plugin for Eclipse","url":"/eclipse/"},"friendconnect":{"title":"Google Friend Connect APIs","url":"/apis/friendconnect/"},"fusion":{"title":"Google Fusion Tables API","url":"/apis/fusiontables/"},"gadgets":{"title":"Gadgets API","url":"/apis/gadgets/"},"googletv":{"title":"Google TV Developers","url":"/tv/"},"health":{"title":"Google Health API","url":"/apis/health/"},"identitytoolkit":{"title":"Google Identity Toolkit API","url":"/apis/identitytoolkit/"},"igoogle":{"title":"iGoogle Developer Home","url":"/apis/igoogle/"},"javadevtools":{"title":"Google Java Developer Tools","url":"/javadevtools"},"themes":{"title":"iGoogle Themes API","url":"/apis/themes/"},"kml":{"title":"KML","url":"/apis/kml/"},"latitude":{"title":"Google Latitude API","url":"/apis/latitude/"},"moderator":{"title":"Google Moderator API","url":"/apis/moderator/"},"geocoding":{"title":"Google Geocoding API","url":"/apis/maps/documentation/geocoding/"},"directions":{"title":"Google Directions API","url":"/apis/maps/documentation/directions/"},"maps":{"title":"Google Maps Javascript API","url":"/apis/maps/documentation/javascript/"},"projecthosting":{"title":"Google Project Hosting","url":"/projecthosting/"},"pss":{"title":"Page Speed Service","url":"/speed/pss/"},"nativeclient":{"title":"Native Client SDK","url":"/chrome/nativeclient/"},"opensocial":{"title":"OpenSocial","url":"/apis/opensocial/"},"orkut":{"title":"Orkut Developer Home","url":"/apis/orkut/"},"pagespeedonline":{"title":"Page Speed Online API","url":"/apis/pagespeedonline/"},"securedataconnector":{"title":"Google Secure Data Connector","url":"/securedataconnector/"},"sites":{"title":"Google Sites Data API","url":"/apis/sites/"},"siteverification":{"title":"Google Site Verification API","url":"/apis/siteverification/"},"sketchup":{"title":"Google SketchUp Ruby API","url":"/apis/sketchup/"},"socialgraph":{"title":"Social Graph API","url":"/apis/socialgraph/"},"spreadsheets":{"title":"Google Spreadsheets Data API","url":"/apis/spreadsheets/"},"staticmaps":{"title":"Google Static Maps API","url":"/apis/maps/documentation/staticmaps/"},"talk":{"title":"Google Talk for Developers","url":"/apis/talk/"},"tasks":{"title":"Google Tasks API","url":"/apis/tasks/"},"transit":{"title":"Google Transit Feed Specification","url":"/transit/spec/transit_feed_specification.html"},"webtoolkit":{"title":"Google Web Toolkit","url":"/webtoolkit/"},"picasaweb":{"title":"Picasa Web Albums Data API","url":"/apis/picasaweb/"},"picker":{"title":"Google Picker API","url":"/apis/picker/"},"pubsubhubbub":{"title":"PubSubHubbub","url":"/apis/pubsubhubbub/"},"recaptcha":{"title":"reCAPTCHA","url":"/apis/recaptcha/"},"searchappliance":{"title":"Google Search Appliance","url":"/apis/searchappliance/"},"urlshortener":{"title":"Google URL Shortener API","url":"/apis/urlshortener/"},"v8":{"title":"V8","url":"/apis/v8/"},"webelements":{"title":"Google Web Elements","url":"http://www.google.com/webelements/"},"webmastertools":{"title":"Google Webmaster Tools Data API","url":"/apis/webmastertools/"},"youtube":{"title":"YouTube APIs","url":"/apis/youtube/"},"mobile":{"title":"Mobile Homepage","url":"/mobile/"},"googleadmob":{"title":"Google AdMob Ads SDK","url":"/mobile/ads"},"analyticsmobile":{"title":"Google Analytics for Mobile","url":"/mobile/analytics"},"mapspremier":{"title":"Google Maps API for Business","url":"/apis/maps/documentation/premier/"},"websearch":{"title":"Web Search API (Deprecated)","url":"/apis/websearch/"},"publicdns":{"title":"Public DNS","url":"/speed/public-dns/"},"opensource":{"title":"OpenSource","url":"/opensource/"},"soc":{"title":"Google Summer of Code","url":"/soc/"},"codejam":{"title":"Google Code Jam","url":"/codejam/"},"playground":{"title":"Code Playground","url":"/apis/ajax/playground/"},"hosting":{"title":"Project Hosting on Google Code","url":"/hosting/"},"edu":{"title":"Google Code University","url":"/edu/"},"doctype":{"title":"Google DocType","url":"/doctype/"},"speed":{"title":"Let's make the web faster","url":"/speed/"},"page-speed":{"title":"Page Speed","url":"/speed/page-speed/"},"webmaster":{"title":"Google Webmaster Central","url":"http://www.google.com/webmasters/"},"csearch":{"title":"Google Code Search","url":"http://www.google.com/codesearch"},"events":{"title":"Developer Events","url":"/events/"},"googleio":{"title":"Google I/O","url":"/events/io/"},"gtug":{"title":"Google Technology User Groups","url":"http://www.gtugs.org/"},"developerday":{"title":"Developer Days","url":"/events/developerday/"},"qualify":{"title":"Developer Qualification","url":"/qualify/"},"campfire":{"title":"Google Campfire One","url":"/campfire/"},"go":{"title":"Go Programming Language","url":"http://www.golang.org"},"html5rocks":{"title":"HTML5 Rocks","url":"http://www.html5rocks.com"},"webp":{"title":"WebP Image Format","url":"/speed/webp"},"adsenseforaudio":{"title":"Google AdSense for Audio API (Deprecated)","url":"/apis/adsenseforaudio/"},"notebook":{"title":"Google Notebook Data API (Deprecated)","url":"/apis/notebook/"},"gra":{"title":"Google Radio Automation API (Deprecated)","url":"/apis/gra/"},"support":{"title":"Knowledge Base","url":"/support/"},"codeblog":{"title":"Google Code Blog","url":"http://google-code-updates.blogspot.com/"},"featuredprojects":{"title":"Featured Projects","url":"http://google-code-featured.blogspot.com/"},"opensourceprojects":{"title":"Open Source Projects","url":"/hosting/projects.html"},"protocolbuffers":{"title":"Protocol Buffers","url":"/apis/protocolbuffers/"}} 2 | -------------------------------------------------------------------------------- /TRAINING(CHINESE)/WEB/risclite - 《兼容ARM9的软核处理器设计:基于FPGA》的配套教程下载 - Google Project Hosting_files/core.css: -------------------------------------------------------------------------------- 1 | body{background:#fff;font:82% arial,sans-serif;margin:3px 0 3px 0;min-width:768px}.headbg{margin:0 8px}a:link,a:focus{color:#00c}a:active{color:red}select,input{font-family:arial,sans-serif}input[type="text"]{border-color:#999 #ccc #ccc;border-style:solid;border-width:1px;padding:2px 1px}input[type=button],input[type=submit],.buttonify{font-size:100%;background:url("//ssl.gstatic.com/codesite/ph/images/button-bg.gif") repeat-x scroll left top #e3e3e3;background:-webkit-gradient(linear,0% 40%,0% 70%,from(#f9f9f9),to(#e3e3e3));background:-moz-linear-gradient(top,#fff,#ddd);vertical-align:baseline;padding:1px 3px 1px 3px;border:1px solid #aaa;border-top-color:#ccc;border-bottom-color:#888;border-radius:3px;-moz-border-radius:3px;cursor:pointer;text-decoration:none}.buttonify{color:#000!important}@-moz-document url-prefix(){.buttonify{padding:2px 3px 2px 3px}}input[type=button]:hover,input[type=submit]:hover,.buttonify:hover{border-color:#666;text-decoration:none!important}.capsule_left{border-right:0;-webkit-border-top-right-radius:0;-webkit-border-bottom-right-radius:0;-moz-border-radius-topright:0;-moz-border-radius-bottomright:0}.capsule_right{-webkit-border-top-left-radius:0;-webkit-border-bottom-left-radius:0;-moz-border-radius-topleft:0;-moz-border-radius-bottomleft:0}.capsule_middle{border-radius:0;-moz-border-radius:0;border-right:0}.mode_button_active,.buttonify:active,input[type=button]:active,input[type=submit]:active{background:url("//ssl.gstatic.com/codesite/ph/images/button-bg.gif") repeat-x scroll left bottom #bbb;background:-webkit-gradient(linear,0% 40%,0% 70%,from(#e3e3e3),to(#f9f9f9));background:-moz-linear-gradient(top,#e3e3e3,#f9f9f9);border-color:#aaa}textarea{border-color:#999 #ccc #ccc;border-style:solid;border-width:1px}td td,th th,th td,td th{font-size:100%}pre{font-size:110%}form{padding:0;margin:0}.gtb{background:#ebeff9;border-bottom:1px solid #6b90da;padding:5px 10px 0 5px;white-space:nowrap}.gtb .tab{color:#00c;cursor:pointer;float:left;margin:5px 15px 6px 10px}.gtb .active{background:#fff;border:1px solid #6b90da;border-bottom:0;color:#000;cursor:default;font-weight:bold;margin:0 5px -1px 0;padding:5px 9px 6px;text-decoration:none}.gtb .gtbc{clear:left}.subt{background:#fff;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',endColorstr='#f1f1f1');background:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f1f1f1));background:-moz-linear-gradient(top,#fff,#f1f1f1);border-bottom:1px solid #ccc;padding:0 0 0 14px;height:33px}table{border-collapse:separate}.box-inner{margin:0;padding:0 13px 0 13px}.round1{border-left:1px solid #fff;border-right:1px solid #fff}.round2{border-left:2px solid #fff;border-right:2px solid #fff}.round4{border-left:4px solid #fff;border-right:4px solid #fff}.round1,.round2,.round4{font-size:0;margin:0;padding:0;height:1px}.bevel-left,.bevel-right{padding:0}.bevel-right .round4,.bevel-right .round2,.bevel-right .round1{border-left:none}.bevel-left .round4,.bevel-left .round2,.bevel-left .round1{border-right:none}.bevel-left .box-inner,.bevel-right .box-inner{padding:0}.bubble_bg{background:#c3d9ff;margin-bottom:0.6em}.bubble{padding:4px}#bub{padding:0 1px 0 1px}.bub-top{margin:0 2px 2px}.bub-bottom{margin:2px 2px 0}.drop-down-bub{font-size:80%;margin-top:-1px}.t5 h4{background-color:#e5ecf9;margin:4px 4px 0 4px;border-top:1px solid #3366cc;padding:2px}.t5 .section{margin:0 4px 1.6em 4px;padding:4px}.t5 .section .submit{margin:8px}#maincol{padding:3px;background:#fff}.isf a,.at a,.isf a:visited,.at a:visited{color:#0000cc;text-decoration:none}.isf a:hover,.at a:hover{color:#0000cc;text-decoration:underline}.st1 .inst1 a,.st2 .inst2 a,.st3 .inst3 a,.st4 .inst4 a,.st5 .inst5 a,.st6 .inst6 a,.st7 .inst7 a,.st8 .inst8 a,.st9 .inst9 a{color:#000;font-weight:bold;text-decoration:none;height:20px}.notice,.error{background:#fff1a8;font-weight:bold}.adminonly{color:#a00;font-style:italic}.fieldhelp{color:grey}.fielderror{color:#a00;font-weight:bold;padding:4px}.tip{background:#e5ecf9;font-size:92%;margin:5px;width:14em}.tip .box-inner{padding:6px}.gbh{border-top:1px solid #c9d7f1;font-size:1px;height:0;position:absolute;top:24px;width:100%}#plogo{width:55px;text-align:center;vertical-align:bottom}#pname{font-size:300%;margin:0;padding:0}#pname a,#pname a:visited{text-decoration:none;color:#666}#project_summary_link{text-decoration:none;color:#444}.vt{vertical-align:top}.indicator{font-size:x-small;color:#00c}div.h4,table.h4{background-color:#e5ecf9;margin-bottom:2px;border-top:1px solid #3366cc;padding:2px;font-weight:bold;position:relative;margin-top:2px}.mainhdr{background-color:#ebeff9;border-bottom:1px solid #6b90da;font-weight:bold;font-size:133%;padding:2px}.secondaryhdr{background-color:#eee;padding:10px;border-bottom:1px solid #ddd;border-left:1px solid #ddd;border-right:1px solid #ddd}.messagebox{background-color:#eee;padding:10px;border:1px solid #ddd}h1{font-size:x-large;margin-top:0px}h2{font-size:large}h3{font-size:medium;background:#e5ecf9;border-top:1px solid #3366cc;padding:0.5ex 0.5em 0.5ex 0.5em;margin-right:2em}h4{font-size:small}img{border:0}#gaia{text-align:right;margin-bottom:10px}#gaia a{color:#00c;text-decoration:none}#header{position:relative;height:55px;padding-top:6px;margin-bottom:-9px}#logo{padding-right:18px;position:absolute;top:0;left:0}#logo img{width:153px;height:55px}#title{margin-left:171px;border-top:1px solid #3366cc;background-color:#e5ecf9;font-size:large;font-weight:bold;padding-left:3px;padding-top:1px;padding-bottom:1px}#footer{clear:both;text-align:center;margin-top:3.5em;margin-bottom:1em;height:53px;background-repeat:no-repeat;background-position:left center}#footer .text{padding-top:20px}.label{text-decoration:none;color:green!important}.label:hover{text-decoration:underline}.results{border-left:1px solid #bbb;border-right:1px solid #bbb}#colcontrol{padding:5px}.cuetip{background:#e5ecf9;border-bottom:1px solid white}.results th{border:1px solid #ccc}.results th{border-left:0}.results th:last-child{border-right:0}.results tr td{border-bottom:1px solid #ccc}.results tr:last-child{border-bottom:0}.results th,.results_lite th{background:#eeeeee;text-align:left;padding-right:1px;border-top:1px solid #ccc;border-bottom:1px solid #ccc}.results th a,.results th a:visited{color:#0000cc;padding-right:4px;margin-right:4px}.results td{background:#fff}.results td{cursor:pointer}.results td{padding:4px}.results td a{color:#000;text-decoration:none}.results td.id a{color:#0000cc;text-decoration:underline;white-space:nowrap}.results td.id a:visited{color:purple;text-decoration:underline}.results td.id a:hover{color:red;text-decoration:underline}table.results tr.hover td{color:#009;background-color:#f4f4ff}table.results tr.hover td a{color:#009}.results .label{font-size:80%}.results .selected td{background:#ffc}.results td tt{color:#999;font-style:italic;font-weight:bold}.results .displayproperties{font-size:80%;color:#666}.grid td{border-right:1px solid #ccc}.grid td{border-left:0}.grid td:last-child{border-right:0}.flipper{font-family:monospace;font-size:120%}.flipper ul{list-style-type:none;padding:0;margin:0em 0.3em}.flipper b{margin:0em 0.3em}.closed .ifOpened{display:none}.closed .opened span.ifOpened{display:inline}.opened .ifClosed{display:none}.opened .closed span.ifClosed{display:inline}.h3{font-size:130%;font-weight:bolder}input{padding-left:1px;padding-right:1px}textarea{padding-left:1px;padding-right:1px}.pagination{font-size:100%;float:right;white-space:nowrap}.pagination a{margin-left:0.3em;margin-right:0.3em}.author{margin-bottom:1em}#searchtips{padding-left:2em}#searchtips p{margin-left:2em}.issueList .inIssueList span,.issueAdvSearch .inIssueAdvSearch a,.issueSearchTips .inIssueSearchTips a{font-weight:bold;text-decoration:none;color:#000}iframe[frameborder="1"]{border:1px solid #999}.menuDiv{margin-top:5px;border-color:#c9d7f1 #3366cc #3366cc #a2bae7;border-style:solid;border-width:1px;z-index:1001;padding:0;width:175px;background:#fff;overflow:hidden}.menuDiv .menuText{padding:3px;text-decoration:none;background:#fff}.menuDiv .menuItem{color:#0000cc;padding:3px;text-decoration:none;background:#fff}.menuDiv .menuItem:hover{color:#fff;background:#3366cc;cursor:hand}.menuDiv .categoryTitle{padding-left:1px}.menuDiv .menuCategory,.menuDiv .categoryTitle{margin-top:4px}.menuDiv .menuSeparator{margin:0 0.5em;border:0;border-top:1px solid #c9d7f1}.hostedBy{text-align:center;vertical-align:center}.fullscreen-popup{position:fixed;right:4%;left:4%;top:5%;max-height:90%;opacity:0.85;-moz-opacity:0.85;-khtml-opacity:0.85;filter:alpha(opacity=85);-moz-border-radius:10px;background:#000;color:white;text-shadow:#000 1px 1px 7px;padding:1em;z-index:10;overflow-x:hidden;overflow-y:hidden}.fullscreen-popup a{color:#dd0}div#keys_help th{color:yellow;text-align:left}div#keys_help td{font-weight:normal;color:white}td.shortcut{text-align:right}span.letter{color:#8d0;font-family:monospace;font-size:medium}#ac-list{border:1px solid #bbb;background:#fff;color:#00c;padding:2px;z-index:10;max-height:18em;overflow-x:hidden;overflow-y:auto}#ac-list{font-size:95%}#ac-list tr{margin:1px;cursor:pointer;padding:0 10px}#ac-list th{color:#333;text-align:left}#ac-list .selected,#ac-list .selected td{background:#c3d9ff}#ac-list td,#ac-list th{white-space:nowrap;padding-right:22px}.list{background-color:#ebeff9;border-top:1px solid #bbb;border-left:1px solid #bbb;border-right:1px solid #bbb;padding:5px}.list-foot{background-color:#ebeff9;border-bottom:1px solid #bbb;border-left:1px solid #bbb;border-right:1px solid #bbb;padding:5px;height:20px}.graytext{color:#666}.vspacer{margin-top:1em}.hspacer{margin-right:1em}.emphasis{font-weight:bold}.formrow{vertical-align:top;padding-bottom:.569em;white-space:nowrap;overflow:hidden;padding-top:.2em}.forminline{display:inline-block;vertical-align:top}.formlabelgutter{margin-top:0.3em;text-align:right;vertical-align:top;white-space:normal;width:13em}.formlabel{font-weight:bold;text-align:right}.forminputgutter{margin-top:0.3em;text-align:left;vertical-align:top;white-space:normal;width:36em}.forminput{width:100%}.formshortinput{width:11em}.formselectgutter{margin-top:0.3em;text-align:left;vertical-align:top;white-space:normal;width:18em}.formselect{width:18em}.formqm{margin-left:0.25em;margin-right:0.25em}.formerror{color:#a00;display:block;text-align:left}.tablerow{vertical-align:top;padding-bottom:.569em;white-space:nowrap;overflow:hidden;padding-top:.2em}.tablelabelgutter{margin-top:0.3em;text-align:left;vertical-align:top;white-space:normal;width:10em}.tablelabel{font-weight:bold;text-align:left}.ph-visibility-icon{margin:10px;vertical-align:bottom}dl.displaychoicelist dd{margin-bottom:1em}dl.displaychoicelist input{vertical-align:top}html>body .goog-inline-block{display:-moz-inline-box;display:inline-block}.goog-inline-block{position:relative;display:inline-block}* html .goog-inline-block{display:inline}*:first-child+html .goog-inline-block{display:inline}.SPRITE_close_icon{background:no-repeat url(sprite.png) -26px 0;width:16px;height:16px}.SPRITE_comments{background:no-repeat url(sprite.png) -71px 0;width:14px;height:12px}.SPRITE_dl_arrow{background:no-repeat url(sprite.png) -85px 0;width:25px;height:16px}.SPRITE_downarrow{background:no-repeat url(sprite.png) -32px -40px;width:10px;height:12px}.SPRITE_filedownload-g16{background:no-repeat url(sprite.png) -56px -16px;width:16px;height:16px}.SPRITE_minus{background:no-repeat url(sprite.png) -92px -16px;width:9px;height:9px}.SPRITE_new-24{background:no-repeat url(sprite.png) -32px -16px;width:24px;height:24px}.SPRITE_pagination-first{background:no-repeat url(sprite.png) -10px 0;width:16px;height:16px}.SPRITE_pagination-last{background:no-repeat url(sprite.png) -16px -32px;width:16px;height:16px}.SPRITE_pagination-next{background:no-repeat url(sprite.png) -76px -31px;width:16px;height:16px}.SPRITE_pagination-prev{background:no-repeat url(sprite.png) -16px -16px;width:16px;height:16px}.SPRITE_paper_pencil-y16{background:no-repeat url(sprite.png) -58px -40px;width:16px;height:16px}.SPRITE_paperclip{background:no-repeat url(sprite.png) 0 -41px;width:15px;height:15px}.SPRITE_pencil-y14{background:no-repeat url(sprite.png) -57px 0;width:14px;height:14px}.SPRITE_people-y16{background:no-repeat url(sprite.png) 0 -25px;width:16px;height:16px}.SPRITE_plus{background:no-repeat url(sprite.png) 0 -16px;width:9px;height:9px}.SPRITE_question-16{background:no-repeat url(sprite.png) -92px -25px;width:16px;height:16px}.SPRITE_show-arrow{background:no-repeat url(sprite.png) -72px -16px;width:4px;height:12px}.SPRITE_star_off{background:no-repeat url(sprite.png) -76px -16px;width:15px;height:15px}.SPRITE_star_on{background:no-repeat url(sprite.png) -92px -41px;width:15px;height:15px}.SPRITE_tearoff_icon{background:no-repeat url(sprite.png) -42px -40px;width:16px;height:16px}.SPRITE_triangle{background:no-repeat url(sprite.png) 0 0;width:10px;height:12px}.SPRITE_lock_grey{background:no-repeat url(sprite.png) -42px 0;width:15px;height:16px} -------------------------------------------------------------------------------- /TRAINING(CHINESE)/WEB/risclite - 《兼容ARM9的软核处理器设计:基于FPGA》的配套教程下载 - Google Project Hosting_files/cover.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/TRAINING(CHINESE)/WEB/risclite - 《兼容ARM9的软核处理器设计:基于FPGA》的配套教程下载 - Google Project Hosting_files/cover.jpg -------------------------------------------------------------------------------- /TRAINING(CHINESE)/WEB/risclite - 《兼容ARM9的软核处理器设计:基于FPGA》的配套教程下载 - Google Project Hosting_files/defaultlogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/TRAINING(CHINESE)/WEB/risclite - 《兼容ARM9的软核处理器设计:基于FPGA》的配套教程下载 - Google Project Hosting_files/defaultlogo.png -------------------------------------------------------------------------------- /TRAINING(CHINESE)/WEB/risclite - 《兼容ARM9的软核处理器设计:基于FPGA》的配套教程下载 - Google Project Hosting_files/ga.js: -------------------------------------------------------------------------------- 1 | (function(){var g=void 0,h=!0,i=null,k=!1,aa=encodeURIComponent,ba=Infinity,ea=setTimeout,fa=decodeURIComponent,l=Math;function ga(a,b){return a.name=b} 2 | var m="push",ha="slice",n="replace",ia="load",ja="floor",ka="charAt",la="value",p="indexOf",ma="match",na="port",oa="createElement",pa="path",q="name",t="host",u="toString",v="length",w="prototype",qa="clientWidth",x="split",ra="stopPropagation",ta="scope",y="location",ua="search",z="protocol",va="clientHeight",wa="href",A="substring",xa="apply",ya="navigator",B="join",C="toLowerCase",D;function za(a,b){switch(b){case 0:return""+a;case 1:return 1*a;case 2:return!!a;case 3:return 1E3*a}return a}function Aa(a){return"function"==typeof a}function Ba(a){return a!=g&&-1<(a.constructor+"")[p]("String")}function E(a,b){return g==a||"-"==a&&!b||""==a}function Ca(a){if(!a||""==a)return"";for(;a&&-1<" \n\r\t"[p](a[ka](0));)a=a[A](1);for(;a&&-1<" \n\r\t"[p](a[ka](a[v]-1));)a=a[A](0,a[v]-1);return a} 3 | function F(a){var b=1,c=0,d;if(!E(a)){b=0;for(d=a[v]-1;0<=d;d--)c=a.charCodeAt(d),b=(b<<6&268435455)+c+(c<<14),c=b&266338304,b=0!=c?b^c>>21:b}return b}function Da(){return l.round(2147483647*l.random())}function Ea(){}function G(a,b){if(aa instanceof Function)return b?encodeURI(a):aa(a);H(68);return escape(a)}function I(a){a=a[x]("+")[B](" ");if(fa instanceof Function)try{return fa(a)}catch(b){H(17)}else H(68);return unescape(a)} 4 | var Fa=function(a,b,c,d){a.addEventListener?a.addEventListener(b,c,!!d):a.attachEvent&&a.attachEvent("on"+b,c)},Ga=function(a,b,c,d){a.removeEventListener?a.removeEventListener(b,c,!!d):a.detachEvent&&a.detachEvent("on"+b,c)};function Ha(a,b){if(a){var c=J[oa]("script");c.type="text/javascript";c.async=h;c.src=a;c.id=b;var d=J.getElementsByTagName("script")[0];d.parentNode.insertBefore(c,d);return c}}function K(a){return a&&0a[x]("/")[0][p](":")&&(a=o+f[2][A](0,f[2].lastIndexOf("/"))+"/"+a);d.href=a;e=c(d);return{protocol:(d[z]||"")[C](),host:e[0], 7 | port:e[1],path:e[2],Ia:d[ua]||"",url:a||""}}function Ma(a,b){function c(b,c){a.contains(b)||a.set(b,[]);a.get(b)[m](c)}for(var d=Ca(b)[x]("&"),e=0;ef?c(d[e],"1"):c(d[e][A](0,f),d[e][A](f+1))}}function Oa(a,b){if(E(a)||"["==a[ka](0)&&"]"==a[ka](a[v]-1))return"-";var c=J.domain;return a[p](c+(b&&"/"!=b?b:""))==(0==a[p]("http://")?7:0==a[p]("https://")?8:0)?"0":a};var Pa=0;function Ra(a,b,c){!(1<=Pa)&&!(1<=100*l.random())&&(a=["utmt=error","utmerr="+a,"utmwv=5.3.0","utmn="+Da(),"utmsp=1"],b&&a[m]("api="+b),c&&a[m]("msg="+G(c[A](0,100))),L.A&&a[m]("aip=1"),Sa(a[B]("&")),Pa++)};var Ta=0,Ua={};function M(a){return Va("x"+Ta++,a)}function Va(a,b){Ua[a]=!!b;return a} 8 | var N=M(),Wa=M(),Xa=M(),Ya=M(),Za=M(),O=M(),P=M(),$a=M(),ab=M(),bb=M(),cb=M(),db=M(),eb=M(),fb=M(),gb=M(),hb=M(),ib=M(),jb=M(),kb=M(),lb=M(),mb=M(),nb=M(),ob=M(),pb=M(),qb=M(),rb=M(),sb=M(),tb=M(),ub=M(),vb=M(),wb=M(),xb=M(),yb=M(),zb=M(),Ab=M(),Q=M(h),Bb=Va("page"),Cb=Va("title"),Db=M(),Eb=M(),Fb=M(),Gb=M(),Hb=M(),Ib=M(),Jb=M(),Kb=M(),Lb=M(),R=M(h),Mb=M(h),Nb=M(h),Qb=M(h),Rb=M(h),Sb=M(h),Tb=M(h),Ub=M(h),Vb=M(h),Wb=M(h),Xb=M(h),S=M(h),Yb=M(h),Zb=M(h),$b=M(h),ac=M(h),bc=M(h),cc=M(h),dc=M(h),ec=M(h), 9 | fc=M(h),gc=M(h),hc=M(h),ic=M(h),jc=M(h),kc=Va("campaignParams"),lc=M(),mc=Va("hitCallback"),nc=M();M();var oc=M(),pc=M(),qc=M(),rc=M(),sc=M(),tc=M(),uc=M(),vc=M(),wc=M(),xc=M(),yc=M(),Cc=M();M();var Dc=M(),Ec=M(),Fc=M();var Ic=function(){function a(a,c,d){T(U[w],a,c,d)}Gc("_getName",Xa,58);Gc("_getAccount",N,64);Gc("_visitCode",R,54);Gc("_getClientInfo",fb,53,1);Gc("_getDetectTitle",ib,56,1);Gc("_getDetectFlash",gb,65,1);Gc("_getLocalGifPath",sb,57);Gc("_getServiceMode",tb,59);V("_setClientInfo",fb,66,2);V("_setAccount",N,3);V("_setNamespace",Wa,48);V("_setAllowLinker",cb,11,2);V("_setDetectFlash",gb,61,2);V("_setDetectTitle",ib,62,2);V("_setLocalGifPath",sb,46,0);V("_setLocalServerMode",tb,92,g,0);V("_setRemoteServerMode", 10 | tb,63,g,1);V("_setLocalRemoteServerMode",tb,47,g,2);V("_setSampleRate",rb,45,1);V("_setCampaignTrack",hb,36,2);V("_setAllowAnchor",db,7,2);V("_setCampNameKey",kb,41);V("_setCampContentKey",pb,38);V("_setCampIdKey",jb,39);V("_setCampMediumKey",nb,40);V("_setCampNOKey",qb,42);V("_setCampSourceKey",mb,43);V("_setCampTermKey",ob,44);V("_setCampCIdKey",lb,37);V("_setCookiePath",P,9,0);V("_setMaxCustomVariables",ub,0,1);V("_setVisitorCookieTimeout",$a,28,1);V("_setSessionCookieTimeout",ab,26,1);V("_setCampaignCookieTimeout", 11 | bb,29,1);V("_setReferrerOverride",Db,49);V("_setSiteSpeedSampleRate",wc,132);a("_trackPageview",U[w].ya,1);a("_trackEvent",U[w].D,4);a("_trackPageLoadTime",U[w].xa,100);a("_trackSocial",U[w].za,104);a("_trackTrans",U[w].Ba,18);a("_sendXEvent",U[w].t,78);a("_createEventTracker",U[w].ea,74);a("_getVersion",U[w].ja,60);a("_setDomainName",U[w].C,6);a("_setAllowHash",U[w].oa,8);a("_getLinkerUrl",U[w].ia,52);a("_link",U[w].link,101);a("_linkByPost",U[w].na,102);a("_setTrans",U[w].sa,20);a("_addTrans",U[w].Y, 12 | 21);a("_addItem",U[w].W,19);a("_setTransactionDelim",U[w].ta,82);a("_setCustomVar",U[w].pa,10);a("_deleteCustomVar",U[w].ga,35);a("_getVisitorCustomVar",U[w].ka,50);a("_setXKey",U[w].va,83);a("_setXValue",U[w].wa,84);a("_getXKey",U[w].la,76);a("_getXValue",U[w].ma,77);a("_clearXKey",U[w].ba,72);a("_clearXValue",U[w].ca,73);a("_createXObj",U[w].fa,75);a("_addIgnoredOrganic",U[w].U,15);a("_clearIgnoredOrganic",U[w].Z,97);a("_addIgnoredRef",U[w].V,31);a("_clearIgnoredRef",U[w].$,32);a("_addOrganic", 13 | U[w].X,14);a("_clearOrganic",U[w].aa,70);a("_cookiePathCopy",U[w].da,30);a("_get",U[w].ha,106);a("_set",U[w].qa,107);a("_addEventListener",U[w].addEventListener,108);a("_removeEventListener",U[w].removeEventListener,109);a("_addDevId",U[w].T);a("_getPlugin",Hc,122);a("_setPageGroup",U[w].ra,126);a("_trackTiming",U[w].Aa,124);a("_initData",U[w].u,2);a("_setVar",U[w].ua,22);V("_setSessionTimeout",ab,27,3);V("_setCookieTimeout",bb,25,3);V("_setCookiePersistence",$a,24,1);a("_setAutoTrackOutbound",Ea, 14 | 79);a("_setTrackOutboundSubdomains",Ea,81);a("_setHrefExamineLimit",Ea,80)};function Hc(a){var b=this.plugins_;if(b)return b.get(a)} 15 | var T=function(a,b,c,d){a[b]=function(){try{return d!=g&&H(d),c[xa](this,arguments)}catch(a){throw Ra("exc",b,a&&a[q]),a;}}},Gc=function(a,b,c,d){U[w][a]=function(){try{return H(c),za(this.a.get(b),d)}catch(e){throw Ra("exc",a,e&&e[q]),e;}}},V=function(a,b,c,d,e){U[w][a]=function(f){try{H(c),e==g?this.a.set(b,za(f,d)):this.a.set(b,e)}catch(j){throw Ra("exc",a,j&&j[q]),j;}}},Jc=function(a,b){return{type:b,target:a,stopPropagation:function(){throw"aborted";}}};var Kc=function(a,b){return"/"!==b?k:(0==a[p]("www.google.")||0==a[p](".google.")||0==a[p]("google."))&&!(-1b[v]||Sc(b[0],c))return k;b=b[ha](1)[B](".")[x]("|"); 20 | 0=b[v])return h;b=b[1][x](-1==b[1][p](",")?"^":",");for(c=0;cb[v]||Sc(b[0],c))return a.set(Zb,g),a.set($b,g),a.set(ac,g),a.set(cc,g),a.set(dc,g),a.set(gc,g),a.set(hc,g),a.set(ic,g),a.set(jc,g),a.set(ec,g),a.set(fc,g),k;a.set(Zb,1*b[1]);a.set($b,1*b[2]);a.set(ac,1*b[3]);ad(a,b[ha](4)[B]("."));return h},ad=function(a,b){function c(a){return(a=b[ma](a+"=(.*?)(?:\\|utm|$)"))&&2==a[v]?a[1]:g}function d(b,c){c&&(c=e?I(c):c[x]("%20")[B](" "), 22 | a.set(b,c))}-1==b[p]("=")&&(b=I(b));var e="2"==c("utmcvr");d(cc,c("utmcid"));d(dc,c("utmccn"));d(gc,c("utmcsr"));d(hc,c("utmcmd"));d(ic,c("utmctr"));d(jc,c("utmcct"));d(ec,c("utmgclid"));d(fc,c("utmdclid"))},Sc=function(a,b){return b?a!=b:!/^\d+$/.test(a)};var Mc=function(){this.B=[]};Mc[w].add=function(a,b){this.B[m]({name:a,r:b})};Mc[w].execute=function(a){try{for(var b=0;b=100*a.get(rb)&&a[ra]()}function dd(a){ed(a.get(N))&&a[ra]()}function fd(a){"file:"==J[y][z]&&a[ra]()}function gd(a){a.get(Cb)||a.set(Cb,J.title,h);a.get(Bb)||a.set(Bb,J[y].pathname+J[y][ua],h)};var hd=new function(){var a=[];this.set=function(b){a[b]=h};this.Va=function(){for(var b=[],c=0;cd?(this.h=b[A](0,d),this.l=b[A](d+1,c),this.g=b[A](c+1)):(this.h=b[A](0,d),this.g=b[A](d+1));this.k=a[ha](1);this.Fa=!this.l&&"_require"==this.g;this.H=!this.h&&!this.l&&"_provide"==this.g}},Y=function(){T(Y[w],"push",Y[w][m],5);T(Y[w],"_getPlugin",Hc,121);T(Y[w], 26 | "_createAsyncTracker",Y[w].Qa,33);T(Y[w],"_getAsyncTracker",Y[w].Ra,34);this.G=new Ja;this.p=[]};D=Y[w];D.Ha=function(a,b,c){var d=this.G.get(a);if(!Aa(d))return k;b.plugins_=b.plugins_||new Ja;b.plugins_.set(a,new d(b,c||{}));return h};D.push=function(a){var b=Z.Ta[xa](this,arguments),b=Z.p.concat(b);for(Z.p=[];0e?b+"#"+d:b+"&"+d;c="";f=b[p]("?");0f?b+"?"+d+c:b+"&"+d+c},Qd=function(a,b,c,d){for(var e=0;3>e;e++){for(var f=0;3>f;f++){if(d==F(a+b+c))return H(127),[b,c];var j=b[n](/ /g,"%20"),o= 38 | c[n](/ /g,"%20");if(d==F(a+j+o))return H(128),[j,o];j=j[n](/\+/g,"%20");o=o[n](/\+/g,"%20");if(d==F(a+j+o))return H(129),[j,o];try{var r=b[ma]("utmctr=(.*?)(?:\\|utm|$)");if(r&&2==r[v]&&(j=b[n](r[1],G(I(r[1]))),d==F(a+j+c)))return H(139),[j,c]}catch(s){}b=I(b)}c=I(c)}};var Ud="|",Wd=function(a,b,c,d,e,f,j,o,r){var s=Vd(a,b);s||(s={},a.get(yb)[m](s));s.id_=b;s.affiliation_=c;s.total_=d;s.tax_=e;s.shipping_=f;s.city_=j;s.state_=o;s.country_=r;s.items_=s.items_||[];return s},Xd=function(a,b,c,d,e,f,j){var a=Vd(a,b)||Wd(a,b,"",0,0,0,"","",""),o;a:{if(a&&a.items_){o=a.items_;for(var r=0;rb[v])&&/^\d+$/.test(b[0])&&(b[0]=""+c,yd(a,"__utmx",b[B](".")))},Sd=function(a,b){var c=Rc(a.get(O),jd("__utmx"));"-"==c&&(c="");return b?G(c):c},$d=function(a){try{var b=La(J[y][wa],k),c=fa(Ia(b.d.get("utm_referrer")))||"";c&&a.set(Db,c);var d=fa(K(b.d.get("utm_expid")));d&&a.set(Fc,d)}catch(e){H(146)}};var ee=function(a,b){var c=l.min(a.b(wc,0),100);if(a.b(R,0)%100>=c)return k;c=ae()||be();if(c==g)return k;var d=c[0];if(d==g||d==ba||isNaN(d))return k;0a[b])return k;return h},fe=function(a){return isNaN(a)|| 40 | 0>a?0:5E3>a?10*l[ja](a/10):5E4>a?100*l[ja](a/100):41E5>a?1E3*l[ja](a/1E3):41E5},de=function(a){for(var b=new td,c=0;c=f)return k;c=1*(""+c);if(""==a||(!qd(a)||""==b||!qd(b)||!rd(c)||isNaN(c)||0>c||0>f||100=a||a>e.get(ub))a=k;else if(!b||!c||128=a&&Ba(b)&&""!=b){var c=this.get(yc)||[];c[a]=b;this.set(yc,c)}};D.T=function(a){a=""+a;if(a[ma](/^[A-Za-z0-9]{1,5}$/)){var b=this.get(Cc)||[];b[m](a);this.set(Cc,b)}};D.u=function(){this.a[ia]()};D.ua=function(a){a&&""!=a&&(this.set(Nb,a),this.a.i("var"))};var he=function(a){"trans"!==a.get(lc)&&500<=a.b(Xb,0)&&a[ra]();if("event"===a.get(lc)){var b=(new Date).getTime(),c=a.b(Yb,0),d=a.b(Tb,0),c=l[ja](1*((b-(c!=d?c:1E3*c))/1E3));0=a.b(S,0)&&a[ra]()}},je=function(a){"event"===a.get(lc)&&a.set(S,l.max(0,a.b(S,10)-1))};var ke=function(){var a=[];this.add=function(b,c,d){d&&(c=G(""+c));a[m](b+"="+c)};this.toString=function(){return a[B]("&")}},le=function(a,b){(b||2!=a.get(tb))&&a.v(Xb)},me=function(a,b){b.add("utmwv","5.3.0");b.add("utms",a.get(Xb));b.add("utmn",Da());var c=J[y].hostname;E(c)||b.add("utmhn",c,h);c=a.get(rb);100!=c&&b.add("utmsp",c,h)},oe=function(a,b){b.add("utmac",Ca(a.get(N)));a.get(Fc)&&b.add("utmxkey",a.get(Fc),h);a.get(oc)&&b.add("utmni",1);var c=a.get(Cc);c&&0=a[v])ze(a,b,c);else if(8192>=a[v]){if(0<=W[ya].userAgent[p]("Firefox")&&![].reduce)throw new ye(a[v]);Ae(a,b)||Be(a,b)}else throw new xe(a[v]);},ze=function(a,b,c){var c=c||we+"/__utm.gif?",d=new Image(1,1);d.src=c+a;d.onload=function(){d.onload=i;d.onerror= 59 | i;b()};d.onerror=function(){d.onload=i;d.onerror=i;b()}},Ae=function(a,b){var c,d=we+"/p/__utm.gif",e=W.XDomainRequest;if(e)c=new e,c.open("POST",d);else if(e=W.XMLHttpRequest)e=new e,"withCredentials"in e&&(c=e,c.open("POST",d,h),c.setRequestHeader("Content-Type","text/plain"));if(c)return c.onreadystatechange=function(){4==c.readyState&&(b(),c=i)},c.send(a),h},Be=function(a,b){if(J.body){a=aa(a);try{var c=J[oa]('')}catch(d){c=J[oa]("iframe"),ga(c,a)}c.height="0";c.width= 60 | "0";c.style.display="none";c.style.visibility="hidden";var e=J[y],e=we+"/u/post_iframe.html#"+aa(e[z]+"//"+e[t]+"/favicon.ico"),f=function(){c.src="";c.parentNode&&c.parentNode.removeChild(c)};Fa(W,"beforeunload",f);var j=k,o=0,r=function(){if(!j){try{if(9")&&(a=a.replace(Zqa,">"));-1!=a.indexOf('"')&&(a=a.replace(Zra,"""));return a},Zoa=/&/g,Zpa=//g,Zra=/\"/g,Zna=/[&<>\"]/;var Zsa=function(a,b){b.unshift(a);Zma.call(this,Zl.apply(Zd,b));b.shift()};Zk(Zsa,Zma);Zsa.prototype.name="AssertionError";var Zn=function(a,b,c){if(!a){var d=Array.prototype.slice.call(arguments,2),e="Assertion failed";if(b)var e=e+(": "+b),f=d;Za(new Zsa(""+e,f||[]))}},Zta=function(a,b){Za(new Zsa("Failure"+(a?": "+a:""),Array.prototype.slice.call(arguments,1)))};var Zo=Array.prototype,Zua=Zo.indexOf?function(a,b,c){Zn(a.length!=Zd);return Zo.indexOf.call(a,b,c)}:function(a,b,c){c=c==Zd?0:0>c?Math.max(0,a.length+c):c;if(Zh(a))return!Zh(b)||1!=b.length?-1:a.indexOf(b,c);for(;c=arguments.length?Zo.slice.call(a,b):Zo.slice.call(a,b,c)};var Zq=function(a,b){this.width=a;this.height=b};Zq.prototype.ma=function(){return new Zq(this.width,this.height)};Zq.prototype.toString=function(){return"("+this.width+" x "+this.height+")"};Zq.prototype.floor=function(){this.width=Math.floor(this.width);this.height=Math.floor(this.height);return this};Zq.prototype.round=function(){this.width=Math.round(this.width);this.height=Math.round(this.height);return this};var ZBa=function(a,b){for(var c in a)b.call(Zb,a[c],c,a)},ZCa=function(a){var b=[],c=0,d;for(d in a)b[c++]=a[d];return b},ZDa=function(a){var b=[],c=0,d;for(d in a)b[c++]=d;return b},ZEa="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "),ZFa=function(a,b){for(var c,d,e=1;eparseFloat(ZQa)){ZPa=""+ZUa;break a}}ZPa=ZQa} 9 | var ZWa=ZPa,ZXa={},Zv=function(a){var b;if(!(b=ZXa[a])){b=0;for(var c=(""+ZWa).replace(/^[\s\xa0]+|[\s\xa0]+$/g,"").split("."),d=(""+a).replace(/^[\s\xa0]+|[\s\xa0]+$/g,"").split("."),e=Math.max(c.length,d.length),f=0;0==b&&f(0==k[1].length?0:parseInt(k[1],10))?1:0)||((0==l[2].length)<(0==k[2].length)?-1:(0==l[2].length)>(0==k[2].length)?1:0)||(l[2]k[2]?1:0)}while(0==b)}b=ZXa[a]=0<=b}return b},ZYa={},ZZa=function(){return ZYa[9]||(ZYa[9]=Zs&&!!document.documentMode&&9<=document.documentMode)};var Z_a=!Zs||ZZa();!Zt&&!Zs||Zs&&ZZa()||Zt&&Zv("1.9.1");var Z0a=Zs&&!Zv("9");var Zw=function(a){a=a.className;return Zh(a)&&a.match(/\S+/g)||[]},Z1a=function(a,b){for(var c=Zw(a),d=Zza(arguments,1),e=c.length+d.length,f=c,g=0;g");c=c.join("")}c=a.createElement(c);d&&(Zh(d)?c.className=d:"array"==Zg(d)?Z1a.apply(Zd,[c].concat(d)):Z5a(c,d));22*this.b&&Zlb(this),Zc):Ze};var Zlb=function(a){if(a.b!=a.i.length){for(var b=0,c=0;b=c.length&&Za(Zgb);var g=c[b++];return a?g:d[g]}};return g};var ZA=function(a,b){return Object.prototype.hasOwnProperty.call(a,b)};var Znb=function(a){return Zmb(a||arguments.callee.caller,[])},Zmb=function(a,b){var c=[];if(Zp(b,a))c.push("[...circular reference...]");else if(a&&50>b.length){c.push(Zob(a)+"(");for(var d=a.arguments,e=0;e=Zxb(this).value){a=this.Mc(a,b,c);b="log:"+a.Bc;Zf.console&&(Zf.console.timeStamp?Zf.console.timeStamp(b):Zf.console.markTimeline&&Zf.console.markTimeline(b));Zf.msWriteProfilerMark&&Zf.msWriteProfilerMark(b);for(b=this;b;){var c=b,d=a;if(c.Vb)for(var e=0,f=Zb;f=c.Vb[e];e++)f(d);b=b.getParent()}}}; 21 | ZB.prototype.Mc=function(a,b,c){var d=new Zqb(a,""+b,this.Lc);if(c){d.Qb=c;var e;var f=arguments.callee.caller;try{var g;var h=Zba("window.location.href");if(Zh(c))g={message:c,name:"Unknown error",lineNumber:"Not available",fileName:h,stack:"Not available"};else{var i,j,l=Ze;try{i=c.lineNumber||c.ad||"Not available"}catch(k){i="Not available",l=Zc}try{j=c.fileName||c.filename||c.sourceURL||h}catch(n){j="Not available",l=Zc}g=l||!c.lineNumber||!c.fileName||!c.stack?{message:c.message,name:c.name, 22 | lineNumber:i,fileName:j,stack:c.stack||"Not available"}:c}e="Message: "+Zm(g.message)+'\nUrl: '+g.fileName+"\nLine: "+g.lineNumber+"\n\nBrowser stack:\n"+Zm(g.stack+"-> ")+"[end]\n\nJS stack traversal:\n"+Zm(Znb(f)+"-> ")}catch(m){e="Exception trying to expose exception! You win, we lose. "+m}d.Pb=e}return d}; 23 | var ZC=function(a,b){a.log(Zwb,b,Zb)},Zyb={},Zzb=Zd,ZAb=function(a){Zzb||(Zzb=new ZB(""),Zyb[""]=Zzb,Zzb.Ub(Zvb));var b;if(!(b=Zyb[a])){b=new ZB(a);var c=a.lastIndexOf("."),d=a.substr(c+1),c=ZAb(a.substr(0,c));c.fb||(c.fb={});c.fb[d]=b;b.Ha=c;Zyb[a]=b}return b};var ZBb=function(){};ZBb.prototype.Tb=Ze;ZBb.prototype.ka=function(){this.Tb||(this.Tb=Zc,this.s())};ZBb.prototype.s=function(){this.Sc&&ZCb.apply(Zd,this.Sc)};var ZCb=function(a){for(var b=0,c=arguments.length;b=a.keyCode)a.keyCode=-1}catch(b){}};Z.s=function(){ZE.z.s.call(this);this.relatedTarget=this.currentTarget=this.target=this.$=Zd};var ZGb=function(){},ZHb=0;Z=ZGb.prototype;Z.key=0;Z.S=Ze;Z.Nb=Ze;Z.ua=function(a,b,c,d,e,f){"function"==Zg(a)?this.Mb=Zc:a&&a.handleEvent&&"function"==Zg(a.handleEvent)?this.Mb=Ze:Za(Error("Invalid listener argument"));this.ga=a;this.ub=b;this.src=c;this.type=d;this.capture=!!e;this.Ua=f;this.Nb=Ze;this.key=++ZHb;this.S=Ze};Z.handleEvent=function(a){return this.Mb?this.ga.call(this.Ua||this.src,a):this.ga.handleEvent.call(this.ga,a)};var ZF={},ZG={},ZH={},ZI={},ZJ=function(a,b,c,d,e){if(b){if("array"==Zg(b)){for(var f=0;ff.keyCode||f.returnValue!=Zb)return Zc;a:{var j=Ze;if(0==f.keyCode)try{f.keyCode=-1;break a}catch(l){j=Zc}if(j||f.returnValue==Zb)f.returnValue=Zc}}j=new ZE;j.ua(f,this);f=Zc;try{if(h){for(var k=[],n=j.currentTarget;n;n=n.parentNode)k.push(n); 31 | g=e[Zc];g.q=g.b;for(var m=k.length-1;!j.L&&0<=m&&g.q;m--)j.currentTarget=k[m],f&=ZPb(g,k[m],d,Zc,j);if(i){g=e[Ze];g.q=g.b;for(m=0;!j.L&&mh&&(a.width="175px");d&&(a.width= 61 | parseInt(a.width,10)+13+"px");e.x+h>b&&(a.left=e.x-(h-f)+"px")};Z.append=function(a,b){var c=b||this.h;"string"==typeof b&&this.d[b]&&(c=this.d[b]);"string"==typeof a?c.innerHTML+=a:c.appendChild(a)};Z.stopPropagation=function(){return function(a){a||(a=window.event);a.cancelBubble=Zc;a.stopPropagation&&a.stopPropagation()}};Z.toggle=function(){"none"==this.h.style.display?this.show():this.va()}; 62 | Z.show=function(){if(""!=this.h.style.display){for(var a=0;a"+f+"",g=""):h&&(f=''+f+"",g="");ZX(ZY,f,g)}Zvc(ZY);ZX(ZY,"Sign in with another account...","http://www.google.com/accounts/AddSession?service=code&continue="+ 69 | c,"controls")}; 70 | -------------------------------------------------------------------------------- /TRAINING(CHINESE)/WEB/risclite - 《兼容ARM9的软核处理器设计:基于FPGA》的配套教程下载 - Google Project Hosting_files/ph_detail.css: -------------------------------------------------------------------------------- 1 | .pmeta_bubble_bg { background: #e5ecf9; margin-bottom: 0.6em;} 2 | .pmeta { text-align:left;} 3 | .pmeta th, .pmeta td { vertical-align:top; } 4 | .pmeta ul { padding:0; margin:0; } 5 | .pmeta li { padding: 0 0 2px 0; list-style-type:none; } 6 | 7 | #wikipage { 8 | background: #f8f8f8; 9 | padding-bottom: 10px; 10 | } 11 | 12 | #wikipage #wikimaincol { 13 | border: 1px solid #ccc; 14 | } 15 | 16 | #wikimaincol { 17 | padding: 5px 25px 10px 10px; 18 | background-color: #fff; 19 | min-width: 64em; 20 | } 21 | 22 | #wikiheader { 23 | padding-top: 10px; 24 | margin-bottom: 12px; 25 | } 26 | 27 | #wikicontent h1, #wikicontent h2, #wikicontent h3, 28 | #wikipreview h1, #wikipreview h2, #wikipreview h3 { 29 | background: none; 30 | border: 0; 31 | padding-left:0; 32 | max-width: 700px; 33 | } 34 | 35 | #wikicontent h3, #wikipreview h3 { 36 | margin: 0; 37 | } 38 | 39 | #wikicontent ul, #wikipreview ul, 40 | #wikicontent ol, #wikipreview ol { 41 | padding-left: 25px; 42 | max-width: 62em; 43 | } 44 | 45 | #wikicontent li, 46 | #wikipreview li { 47 | margin-bottom: 0.3em; 48 | } 49 | 50 | #wikicontent p, 51 | #wikipreview p { 52 | line-height: 1.25em; 53 | max-width: 64em; 54 | } 55 | 56 | #wikicontent hr, 57 | #wikipreview hr { 58 | width: 100%; 59 | color: #ccc; 60 | background-color: #ccc; 61 | } 62 | 63 | #wikicontent img, 64 | #wikipreview img { 65 | max-width: 100%; 66 | } 67 | 68 | #wikiauthor { 69 | clear: both; 70 | text-align: right; 71 | font-size: x-small; 72 | } 73 | 74 | .wikitable { 75 | border-spacing: 0; 76 | border: 1px solid #ccc; 77 | } 78 | 79 | .gadget-title { 80 | margin-bottom: 2px; 81 | } 82 | 83 | a.section_anchor:before { content: "\00B6" } 84 | a.section_anchor { display: none; text-decoration: none; margin-left: .7em; font-weight: lighter; font-size: 85%; } 85 | h1:hover a.section_anchor, h2:hover a.section_anchor, h3:hover a.section_anchor, 86 | h4:hover a.section_anchor, h5:hover a.section_anchor, h6:hover a.section_anchor { display: inline; color: #bbb; } 87 | h1 a.section_anchor:hover, h2 a.section_anchor:hover, h3 a.section_anchor:hover, 88 | h4 a.section_anchor:hover, h5 a.section_anchor:hover, h6 a.section_anchor:hover { color: #33c; } 89 | 90 | #wikicontent code, tt, #wikicontent pre, 91 | #wikipreview code, tt, #wikipreview pre { 92 | font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace; 93 | font-size: 93%; 94 | max-width: 66em; 95 | } 96 | 97 | pre.prettyprint { 98 | padding: 0.5em; 99 | overflow: auto; 100 | font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace; 101 | font-size: 93%; 102 | } 103 | 104 | #wikicontent pre.prettyprint, 105 | #wikipreview pre.prettyprint { 106 | background-color: #eee; 107 | max-width: 70em; 108 | } 109 | 110 | #wikicontent blockquote, 111 | #wikipreview blockquote { 112 | max-width: 60em; 113 | } 114 | 115 | blockquote { 116 | margin: 20px; 117 | } 118 | 119 | .issuedescription pre, .issuecomment pre { 120 | white-space: pre-wrap; 121 | white-space: -moz-pre-wrap; 122 | white-space: -pre-wrap; 123 | white-space: -o-pre-wrap; 124 | } 125 | 126 | .prettyprint .str { color: #080; } 127 | .prettyprint .kwd { color: #008; } 128 | .prettyprint .com { color: #800; } 129 | .prettyprint .typ { color: #606; } 130 | .prettyprint .lit { color: #066; } 131 | .prettyprint .pun { color: #660; } 132 | .prettyprint .pln { color: #000; } 133 | .prettyprint .tag { color: #008; } 134 | .prettyprint .atn { color: #606; } 135 | .prettyprint .atv { color: #080; } 136 | .prettyprint .dec { color: #606; } 137 | 138 | @media print { 139 | .prettyprint .str { color: #060; } 140 | .prettyprint .kwd { color: #006; font-weight: bold; } 141 | .prettyprint .com { color: #600; font-style: italic; } 142 | .prettyprint .typ { color: #404; font-weight: bold; } 143 | .prettyprint .lit { color: #044; } 144 | .prettyprint .pun { color: #440; } 145 | .prettyprint .pln { color: #000; } 146 | .prettyprint .tag { color: #006; font-weight: bold; } 147 | .prettyprint .atn { color: #404; } 148 | .prettyprint .atv { color: #060; } 149 | } 150 | 151 | .closed_ref { text-decoration: line-through } 152 | 153 | .notes { 154 | background: #ffc; 155 | border: 1px solid #999; 156 | border-width: 0 1px 1px 0; 157 | padding: 2px; width: 818px; 158 | } 159 | 160 | .rowmajor { width: 700px; } 161 | .rowmajor th { text-align: right; } 162 | .labelediting input { margin: 0 3px 4px 0; } 163 | .labelediting input { color: #060; } 164 | 165 | .collapse .ifExpand { display: none } 166 | .expand .ifCollapse { display: none } 167 | 168 | .inplace input { width: 100%; } 169 | .inplace td { border: 0; } 170 | 171 | #issueheader { 172 | margin: 0.5em 0 0em 0; 173 | border: 3px solid #e5ecf9; 174 | background: #e5ecf9; 175 | } 176 | #issueheader td { background: #e5ecf9; } 177 | 178 | .closed_colors #issueheader { background: #ddd; border-color: #ddd; } 179 | .closed_colors #issueheader td { background: #ddd; } 180 | 181 | .issuepage { margin-top: 0; } 182 | .issuepage td { padding: 0.5em .5em .5em 0; } 183 | 184 | .issuecomment { border-top: 3px solid #e5ecf9;} 185 | .closed_colors .issuecomment { border-color: #ddd; } 186 | 187 | .issuedescription pre, .issuecomment pre { max-width:80em; padding-left:.7em;} 188 | 189 | .issuedescription pre b, .issuecomment pre b { 190 | font-size: 110%; 191 | font-weight: bolder; 192 | padding: 3px 0 3px 0; 193 | } 194 | 195 | .author { padding-left: .7em; } 196 | 197 | #issuemeta { 198 | width: 12em; 199 | border-right: 3px solid #e5ecf9; 200 | font-size: 95%; 201 | vertical-align: top; 202 | } 203 | .closed_colors #issuemeta { border-color: #ddd; } 204 | 205 | 206 | #issuemeta table tr.hover a { text-decoration: underline } 207 | #issuemeta table td, #issuemeta table th { 208 | margin: 0; 209 | padding: 0; 210 | padding-top: 5px; 211 | } 212 | 213 | .rel_issues a { white-space: nowrap;} 214 | 215 | .updates { 216 | margin: 1em 0 .5em .7em; 217 | background: #e5ecf9; 218 | width: 80%; 219 | font-size: 90%; 220 | } 221 | 222 | .closed_colors .updates { background: #c8c8c8; } 223 | .fakelink {color: #0000cc; cursor: pointer; white-space: nowrap; text-decoration:underline} 224 | .undef { color: #666; } 225 | 226 | table.advquery, table.issueimport { border: 3px solid #e5ecf9;} 227 | table.advquery td, table.issueimport td { white-space: nowrap; padding: 2px; } 228 | .focus td { background: #e5ecf9; } 229 | 230 | .eg { color: #666; font-size: 90%; } 231 | 232 | #submit { font-weight: bold; } 233 | 234 | div td .novel { color: #430;} 235 | div td .blockingsubmit { color: #a03;} 236 | 237 | div td .exclconflict { color: #a03;} 238 | div td .questionmark { color: #a03;} 239 | 240 | .delcom { background: #e8e8e8 } 241 | 242 | .numberentry { text-align: right; } 243 | 244 | /* Project Summary Page */ 245 | .pscolumnl { 246 | min-width: 15em; 247 | border-right:2px solid #e9e9e9; 248 | } 249 | .pscontent { 250 | width:100%; 251 | vertical-align:top; 252 | } 253 | .psicon { 254 | padding-left:5px; 255 | padding-top:5px; 256 | } 257 | .psdescription { 258 | padding:0 10px 0 10px !important; 259 | width:100%; 260 | } 261 | .pslist { 262 | list-style-type: none; 263 | padding-left: 34px; 264 | margin: 0; 265 | } 266 | .phead { 267 | background-color:#E5EDF9; 268 | font-weight:bold; 269 | height:15px; 270 | margin:5px 5px 4px; 271 | padding:3px 6px; 272 | white-space: nowrap; 273 | } 274 | .pfeatured { 275 | background-color:#ddf8cc; 276 | } 277 | .psmeta { 278 | margin: 0 5px 0 0; 279 | padding: 0; 280 | } 281 | .psline { 282 | height: 1px; 283 | border: 0; 284 | background-color:#e9e9e9; 285 | margin:5px 5px 10px 10px; 286 | } 287 | .psgap { 288 | height: 1em; 289 | } 290 | .nowrap { 291 | white-space:nowrap; 292 | } 293 | #derived_labels_target .label {font-weight: bold;} 294 | #derived_labels_target .label:hover {text-decoration: none;} 295 | -------------------------------------------------------------------------------- /TRAINING(CHINESE)/WEB/risclite - 《兼容ARM9的软核处理器设计:基于FPGA》的配套教程下载 - Google Project Hosting_files/prettify_core_compiled.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2006 Google Inc. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | var n=!0,r=null,z=!1;window.PR_SHOULD_USE_CONTINUATION=n;window.PR_TAB_WIDTH=8;window.PR_normalizedHtml=window.PR=window.prettyPrintOne=window.prettyPrint=void 0;window._pr_isIE6=function(){var x=navigator&&navigator.userAgent&&navigator.userAgent.match(/\bMSIE ([678])\./),x=x?+x[1]:z;window._pr_isIE6=function(){return x};return x}; 17 | (function(){function x(a){return a.replace(F,"&").replace(G,"<").replace(H,">")}function C(a,b,k){switch(a.nodeType){case 1:var l=a.tagName.toLowerCase();b.push("<",l);var h=a.attributes,p=h.length;if(p){if(k){for(var u=[],f=p;0<=--f;)u[f]=h[f];u.sort(function(a,b){return a.name");for(h= 18 | a.firstChild;h;h=h.nextSibling)C(h,b,k);(a.firstChild||!/^(?:br|link|img)$/.test(l))&&b.push("");break;case 3:case 4:b.push(x(a.nodeValue))}}function I(a){function b(a){if("\\"!==a.charAt(0))return a.charCodeAt(0);switch(a.charAt(1)){case "b":return 8;case "t":return 9;case "n":return 10;case "v":return 11;case "f":return 12;case "r":return 13;case "u":case "x":return parseInt(a.substring(2),16)||a.charCodeAt(1);case "0":case "1":case "2":case "3":case "4":case "5":case "6":case "7":return parseInt(a.substring(1), 19 | 8);default:return a.charCodeAt(1)}}function k(a){if(32>a)return(16>a?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if("\\"===a||"-"===a||"["===a||"]"===a)a="\\"+a;return a}function l(a){for(var j=a.substring(1,a.length-1).match(RegExp("\\\\u[0-9A-Fa-f]{4}|\\\\x[0-9A-Fa-f]{2}|\\\\[0-3][0-7]{0,2}|\\\\[0-7]{1,2}|\\\\[\\s\\S]|-|[^-\\\\]","g")),a=[],c=[],f="^"===j[0],e=f?1:0,m=j.length;ed||122d||90d||122m[0]&&(m[1]+1>m[0]&&c.push("-"),c.push(k(m[1]))); 21 | c.push("]");return c.join("")}function h(a){for(var b=a.source.match(RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g")),c=b.length,d=[],e=0,f=0;e/,r])):b.push(["com",/^#[^\r\n]*/,r,"#"]));a.cStyleComments&&(k.push(["com",/^\/\/[^\r\n]*/,r]),k.push(["com",/^\/\*[\s\S]*?(?:\*\/|$)/,r]));a.regexLiterals&&k.push(["lang-regex",RegExp("^"+P+"(/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/)")]);a=a.keywords.replace(/^\s+|\s+$/g,"");a.length&&k.push(["kwd",RegExp("^(?:"+a.replace(/\s+/g,"|")+")\\b"),r]);b.push(["pln", 28 | /^\s+/,r," \r\n\t\u00a0"]);k.push(["lit",/^@[a-z_$][a-z_$@0-9]*/i,r],["typ",/^@?[A-Z]+[a-z][A-Za-z_$@0-9]*/,r],["pln",/^[a-z_$][a-z_$@0-9]*/i,r],["lit",/^(?:0x[a-f0-9]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+\-]?\d+)?)[a-z]*/i,r,"0123456789"],["pun",/^.[^\s\w\.$@\'\"\`\/\#]*/,r]);return y(b,k)}function Q(a){function b(a){if(a>s){d&&d!==v&&(f.push(""),d=r);!d&&v&&(d=v,f.push(''));var b=x(j(k.substring(s,a))).replace(i?o:c,"$1 ");i=m.test(b);f.push(b.replace(e,w)); 29 | s=a}}var k=a.source,l=a.extractedTags,h=a.decorations,p=a.numberLines,u=a.sourceNode,f=[],s=0,d=r,v=r,q=0,t=0,j=O(window.PR_TAB_WIDTH),c=/([\r\n ]) /g,o=/(^| ) /gm,e=/\r\n?|\n/g,m=/[ \r\n]$/,i=n,g=window._pr_isIE6(),u=g?u&&"PRE"===u.tagName?6===g?" \r\n":7===g?" 
\r":8===g?" 
":" \r":" 
":"
",w;if(p){for(var J=[],g=0;10>g;++g)J[g]=u+'
  • ';var y="number"===typeof p?p-1:0;f.push('
    1. ");w=function(){var a=J[++y%10];return d?""+a+'':a}}else w=u;for(;;)if(u=q"),d=r),f.push(l[q+1]),q+=2;else if(t");p&&f.push("
    ");a.prettyPrintedHtml=f.join("")}function g(a,b){for(var k=b.length;0<=--k;){var l=b[k];B.hasOwnProperty(l)?"console"in window&&console.warn("cannot override language handler %s",l):B[l]= 31 | a}}function K(a,b){if(!a||!B.hasOwnProperty(a))a=/^\s*o)c=q;else{for(--o;0<=(o=q.indexOf("&#",o+1));){var e=q.indexOf(";",o);if(0<=e){var m=q.substring(o+3,e),i=10;m&&"x"===m.charAt(0)&&(m=m.substring(1),i=16);var w=parseInt(m,i);isNaN(w)||(q=q.substring(0, 33 | o)+String.fromCharCode(w)+q.substring(e+1))}}c=q.replace(V,"<").replace(W,">").replace(X,"'").replace(Y,'"').replace(Z," ").replace($,"&")}b.push(c);p+=c.length}}l={source:b.join(""),tags:g};var y=l.source;a.source=y;a.basePos=0;a.extractedTags=l.tags;K(k,y)(a);Q(a)}catch(x){"console"in window&&console.log(x&&x.stack?x.stack:x)}}function aa(a,b,k){a={sourceCodeHtml:a,langExtension:b,numberLines:k};L(a);return a.prettyPrintedHtml}function ba(a){function b(){for(var k=window.PR_SHOULD_USE_CONTINUATION? 34 | f.now()+250:Infinity;s\n')),E=!/)[\r\n]+/g,"$1").replace(/(?:[\r\n]+[ \t]*)+/g," "))}else{j=[];for(c=c.firstChild;c;c=c.nextSibling)C(c,j);j=j.join("")}j=j.replace(/(?:\r\n?|\n)$/,"");c=h.className.match(/\blinenums\b(?::(\d+))?/);d={sourceCodeHtml:j,langExtension:g,sourceNode:h,numberLines:c? 36 | c[1]&&c[1].length?+c[1]:n:z};L(d);if(h=d.prettyPrintedHtml)if(g=d.sourceNode,"XMP"===g.tagName){j=document.createElement("PRE");for(c=0;c:&a-z])/g,"\\$1");return b+=")\\s*"}(), 38 | F=/&/g,G=//g,N=/\"/g,V=/</g,W=/>/g,X=/'/g,Y=/"/g,$=/&/g,Z=/ /g,ca=/[\r\n]/g,E=r,R=RegExp("[^<]+|<\!--[\\s\\S]*?--\>||\"']|'[^']*'|\"[^\"]*\")*>|<","g"),S=/^<\!--/,T=/^]*(?:>|$)/],["com",/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),"default-markup htm html mxml xhtml xml xsl".split(" ")); 40 | g(y([["pln",/^[\s]+/,r," \t\r\n"],["atv",/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,r,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],["pun",/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]), 41 | ["in.tag"]);g(y([],[["atv",/^[\s\S]+/]]),["uq.val"]);g(w({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof alignof align_union asm axiom bool concept concept_map const_cast constexpr decltype dynamic_cast explicit export friend inline late_check mutable namespace nullptr reinterpret_cast static_assert static_cast template typeid typename using virtual wchar_t where ", 42 | hashComments:n,cStyleComments:n}),"c cc cpp cxx cyc m".split(" "));g(w({keywords:"null true false"}),["json"]);g(w({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof abstract boolean byte extends final finally implements import instanceof null native package strictfp super synchronized throws transient as base by checked decimal delegate descending dynamic event fixed foreach from group implicit in interface internal into is lock object out override orderby params partial readonly ref sbyte sealed stackalloc string select uint ulong unchecked unsafe ushort var ", 43 | hashComments:n,cStyleComments:n,verbatimStrings:n}),["cs"]);g(w({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof abstract boolean byte extends final finally implements import instanceof null native package strictfp super synchronized throws transient ", 44 | cStyleComments:n}),["java"]);g(w({keywords:"break continue do else for if return while case done elif esac eval fi function in local set then until ",hashComments:n,multiLineStrings:n}),["bsh","csh","sh"]);g(w({keywords:"break continue do else for if return while and as assert class def del elif except exec finally from global import in is lambda nonlocal not or pass print raise try with yield False True None ",hashComments:n,multiLineStrings:n,tripleQuotedStrings:n}),["cv","py"]);g(w({keywords:"caller delete die do dump elsif eval exit foreach for goto if import last local my next no our print package redo require sub undef unless until use wantarray while BEGIN END ", 45 | hashComments:n,multiLineStrings:n,regexLiterals:n}),["perl","pl","pm"]);g(w({keywords:"break continue do else for if return while alias and begin case class def defined elsif end ensure false in module next nil not or redo rescue retry self super then true undef unless until when yield BEGIN END ",hashComments:n,multiLineStrings:n,regexLiterals:n}),["rb"]);g(w({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof debugger eval export function get null set undefined var with Infinity NaN ", 46 | cStyleComments:n,regexLiterals:n}),["js"]);g(w({keywords:"all and by catch class else extends false finally for if in is isnt loop new no not null of off on or return super then true try unless until when while yes ",hashComments:3,cStyleComments:n,multilineStrings:n,tripleQuotedStrings:n,regexLiterals:n}),["coffee"]);g(y([],[["str",/^[\s\S]+/]]),["regex"]);window.PR_normalizedHtml=C;window.prettyPrintOne=aa;window.prettyPrint=ba;window.PR={combinePrefixPatterns:I,createSimpleLexer:y,registerLangHandler:g, 47 | sourceDecorator:w,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit",PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ"}})(); 48 | -------------------------------------------------------------------------------- /linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/linux.png -------------------------------------------------------------------------------- /uclinux.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/risclite/ARM9-compatible-soft-CPU-core/fc17416644f6021e99c41e81faad1135609a3036/uclinux.jpg --------------------------------------------------------------------------------