差别
这里会显示出您选择的修订版和当前版本之间的差别。
| 两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
|
乘法器 [2016/06/30 14:31] anran [硬件连接] |
乘法器 [2021/09/28 09:28] (当前版本) gongyu |
||
|---|---|---|---|
| 行 1: | 行 1: | ||
| - | =====乘法器===== | + | ## 乘法器 |
| + | |||
| + | ### 1. 硬件平台 | ||
| - | ====硬件平台==== | ||
| - | ------ | ||
| - [[STEP-MXO2第一代]] | - [[STEP-MXO2第一代]] | ||
| - [[STEP-Baseboard]] | - [[STEP-Baseboard]] | ||
| - | ====设计要求==== | + | ### 2. 设计要求 |
| - | ------ | + | |
| - 掌握乘法器的工作原理 | - 掌握乘法器的工作原理 | ||
| - 掌握组合逻辑的设计 | - 掌握组合逻辑的设计 | ||
| - 基于小脚丫STEP FPGA Base Board开发平台实现乘法器的设计 | - 基于小脚丫STEP FPGA Base Board开发平台实现乘法器的设计 | ||
| - | ====工作原理==== | + | ### 3. 工作原理 |
| - | ------ | + | |
| FPGA实现乘法器的设计可以有多种方法,可以设计为串行的和并行的: | FPGA实现乘法器的设计可以有多种方法,可以设计为串行的和并行的: | ||
| * 串行乘法器:速度比较慢、时延大,完成同样位宽的乘法器资源占用最少。 | * 串行乘法器:速度比较慢、时延大,完成同样位宽的乘法器资源占用最少。 | ||
| - | * 并行乘法器:相对串行乘法器,速度更快,实验小,需要更多的硬件资源。 | + | * 并行乘法器:相对串行乘法器,速度更快,时延小,需要更多的硬件资源。 |
| 串行乘法器需要一个寄存器,每次时钟触发完成乘数中的一位与被乘数之间的运算,同时加入寄存器中,如此乘数的位宽是多少就需要至少多少个时钟的时延完成乘法器的运算。并行乘法器为了降低时延,需要乘数位宽中的每一位同时完成与被乘数之间的运算,这样就需要乘数位宽数个寄存器,然后将所有寄存器的值相加得到乘法结果。 | 串行乘法器需要一个寄存器,每次时钟触发完成乘数中的一位与被乘数之间的运算,同时加入寄存器中,如此乘数的位宽是多少就需要至少多少个时钟的时延完成乘法器的运算。并行乘法器为了降低时延,需要乘数位宽中的每一位同时完成与被乘数之间的运算,这样就需要乘数位宽数个寄存器,然后将所有寄存器的值相加得到乘法结果。 | ||
| 行 23: | 行 23: | ||
| - | ====硬件连接==== | + | ### 4. 硬件连接 |
| - | ------ | + | |
| - | 结合实验平台[[STEP-Baseboard]]的硬件配置,我们使用8个LED灯作为流水灯的输出 | + | |
| - | {{:图11.拨码模块电路连接.png?300 |拨码模块电路连接}} | + | |
| - | {{ :图9.按键模块电路连接.png?300 |按键模块电路连接}} | + | |
| - | {{ :图10.LED模块电路连接.png?300|LED模块电路连接}} | + | |
| + | 结合实验平台[[STEP-Baseboard]]的硬件配置,我们使用4路拨码开关表示乘数,4路按键开关表示被乘数,8个LED灯作为乘法器的输出 | ||
| - | ====代码设计==== | + | {{:图11.拨码模块电路连接.png?500 |拨码模块电路连接}} |
| - | ---- | + | |
| - | ===设计文件=== | + | {{ :图10.LED模块电路连接.png?500|LED模块电路连接}} |
| + | |||
| + | {{:图9.按键模块电路连接.png?500|按键模块电路连接}} | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ### 5. 代码设计 | ||
| + | |||
| + | 设计文件 | ||
| {{ :流水灯程序设计.jpg |流水灯程序设计}} | {{ :流水灯程序设计.jpg |流水灯程序设计}} | ||
| 行 86: | 行 91: | ||
| </code> | </code> | ||
| - | ===测试文件=== | + | 测试文件 |
| 测试文件中我们需要对设计文件中的参数CNT_NUM进行重新赋值 | 测试文件中我们需要对设计文件中的参数CNT_NUM进行重新赋值 | ||
| 行 105: | 行 110: | ||
| ^ 管脚名称 | clk_in| rst_n_in | led_out[0] |led_out[1] |led_out[2] |led_out[3] |led_out[4] |led_out[5] |led_out[6] |led_out[7] | | ^ 管脚名称 | clk_in| rst_n_in | led_out[0] |led_out[1] |led_out[2] |led_out[3] |led_out[4] |led_out[5] |led_out[6] |led_out[7] | | ||
| ^ FPGA管脚 | C1 | A2 |B14 |C14 |E14 |F14 |G14 |J14 |K14 |L14 | | ^ FPGA管脚 | C1 | A2 |B14 |C14 |E14 |F14 |G14 |J14 |K14 |L14 | | ||
| - | ====仿真结果==== | + | |
| + | 仿真结果 | ||
| {{:流水灯仿真.jpg|流水灯仿真}} | {{:流水灯仿真.jpg|流水灯仿真}} | ||
| - | ====资源报告==== | + | |
| + | 资源报告 | ||
| ^ 资源 | 数量 | 比例 | 说明 | | ^ 资源 | 数量 | 比例 | 说明 | | ||
| 行 117: | 行 124: | ||
| ^ 时钟频率 | 25MHz | | | | ^ 时钟频率 | 25MHz | | | | ||
| - | ====知识点==== | + | 知识点 |
| * 分频设计 | * 分频设计 | ||
| 行 123: | 行 130: | ||
| * 简单状态机 | * 简单状态机 | ||
| - | + | 参考文档 | |
| - | ====参考文档==== | + | |
| * [[点亮led灯]] | * [[点亮led灯]] | ||
| * {{:machxo2familydatasheet.pdf|Lattice MachXO2数据手册}} | * {{:machxo2familydatasheet.pdf|Lattice MachXO2数据手册}} | ||
| - | ====相关文档==== | + | 相关文档 |
| ^ **文件名称** | **功能** | | ^ **文件名称** | **功能** | | ||