差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

后一修订版
前一修订版
后一修订版 两侧同时换到之后的修订记录
乘法器 [2016/06/27 11:10]
anran 创建
乘法器 [2021/09/13 22:47]
gongyu
行 1: 行 1:
-=====流水灯=====+## 乘法器 
 + 
 +### 1. 硬件平台
  
-====硬件平台==== 
------- 
   - [[STEP-MXO2第一代]]   - [[STEP-MXO2第一代]]
   - [[STEP-Baseboard]]   - [[STEP-Baseboard]]
  
-====设计要求==== +### 2. 设计要求 
------- + 
-  - 掌握任意数分频计数功能设计 +  - 掌握乘法器工作原理 
-  - 掌握时序逻辑的设计 +  - 掌握组合逻辑的设计 
-  - 掌握case的基本语法 +  - 基于小脚丫STEP FPGA Base Board开发平台实现乘法器 
-  - 基于小脚丫STEP FPGA Base Board开发平台LED实现流水灯功能,总8个LED灯循环轮流点亮LED点亮时间为1秒+ 
 +### 3. 工作原理 
 + 
 +FPGA实现乘法器的设计可以有多种方法可以设计为串行的和并行的: 
 +  * 串行乘法器:速度比较慢时延大完成同样位宽的乘法器资源占用最少。 
 +  * 并行乘法器:相对串行乘法器,速度更快,时延小,需要更多的硬件资源。 
 + 
 +串行乘法器需要一寄存器,每次钟触发完成乘数中的一位与被乘数之的运算,同时加入寄存器中,如此乘数的位宽是多少就需要至少多少个时钟的时延完成乘法器的运算。并行乘法器了降低时延,需要乘数位宽中的每一位同时完成与被乘数之间的运算,这样就需要乘数位宽数个寄存器,然后将所有寄存器的值相加得到乘法结果。 
  
-====工作原理==== 
------- 
  
-本设计为流水灯实验,我们需要结合使用的硬件平台实现[[STEP-Baseboard]]平台上的8个LED循环闪烁,每个LED灯点亮时间为1秒。 
  
-LED也叫发光二极管,属于二极管的一种,具有二极管的单项导电性,使用时需要给LED上施加正向压差,产生电流(一般在20mA以内,具体参考设计中使用的LED的参数),点亮LED。本平台使用的8个LED都是通过低电平点亮(参照电路图),因此控制该LED的FPGA的IO管脚输出“1“(高电平)时LED灭,输出”0“(低电平)时LED亮。+### 4. 硬件连接
  
-为了使一个循环周期内每个LED点亮1秒的时间,我们需要一个持续时间为1秒的低电平信号,这可以通过本硬件平台[[STEP-MXO2第一代]]25MHz主时钟得到2^25 = 33554432 > 25000000,所以我们需要做一个位宽为25的计器。计数器初值为0当计到24999999时总共计数25000000,也就是1秒时间。+结合实验平台[[STEP-Baseboard]]的硬件配置,我们使用4路拨码开关表示乘数,4路按键开关表示被乘数,8个LED灯作为乘法器的输出
  
-为了实现流水的效果,我们需要一个寄存器,寄存器的值不同控制着不同的LED点亮,而寄存器的值在每次计数器计数到24999999时改变,这样每隔1秒时间,寄存器的值改变,对应控制8个LED按照同一方向循环闪烁,就实现了流水灯的功能。+{{:​图11.拨码模块电路连接.png?​500 |拨码模块电路连接}}
  
 +{{ :​图10.LED模块电路连接.png?​500|LED模块电路连接}}
  
 +{{:​图9.按键模块电路连接.png?​500|按键模块电路连接}}
  
  
-====硬件连接==== 
------- 
-结合实验平台[[STEP-Baseboard]]的硬件配置,我们使用8个LED灯作为流水灯的输出 
  
-{{ :​图10.LED模块电路连接.png |LED模块电路连接}} 
  
 +### 3. 代码设计
  
-====代码设计==== 
----- 
 ===设计文件=== ===设计文件===