基于 VHDL 的 8 位除法器的实现
The Design of 8 Division With VHDL
陈玉丹
1
,齐京礼
2
, 陈建泗
2
CHEN Yu-dan
1
, Qi Jing-li
2
, CHEN Jian-si
2
(1.军械工程学院光学与电子工程系 2.训练部,河北 石家庄 050003)
(1.Deparment of Optics and Electronics Engineering, Ordance Engineering College
2.Trainning Department, Shijiazhuang, Hebei 050003)
摘要:介绍了利用 VHDL 实现八位除法,采用层次化设计,给出了实现除法的子模块程序。
使用 Altera 公司的 MAX+PLUSII10.2 开发软件进行功能仿真并给出仿真波形。
关键词:二进制除法 VHDL MAX+PLUS2
中国分类号:TP312 文献标识码:A
Abstract: The design of division(8/8) by hierarchy technique is proposed.
Schematic documents and submodule program with VHDL language are also given. At the
end of the article, using MAX+PLUS2, the flow char is given and the simulation result
is attached.
Keywords: division VHDL MAX+PLUS2
引言
除法是数值计算和数据分析中最常用的运算之一,许多高级运算如平方根、指数、三角
函数等都与其有关。在 FPGA 中,有加、减、乘、除的算法指令,但除法中除数必须是 2 的
幂,因此无法实现除数为任意数的除法。本文用 VHDL 编写了除法运算,可实现任意八位数
的除法。
除法器的设计
本文所采用的除法原理是:
对于八位无符号被除数 A,先对 A 转换成高八位是 0 低八位是 A 的数 C,在时钟脉冲的
每个上升沿 C 向左移动一位,最后一位补零,同时判断 C 的高八位是否大于除数 B,如是则
C 的高八位减去 B,同时进行移位操作,将 C 的第二位置 1。否则,继续移位操作。经过八
个周期后,所得到的 C 的高八位为余数,第八位为商。从图(1)可清楚地看出此除法器的
工作原理。此除法器主要包括比较器、减法器、移位器、控制器等模块。
1、比较模块
设计中所用的八位比较器是由两个四位比较器级联而成的。比较器的原理是先对高位进
行比较,如果不相等,则得出结论,否则,再对下一位进行比较。设计的四位比较器可以级
联成任意位的比较器。比较器输出信号决定减法器是否进行减法运算。
2、运算控制模块
控制模块的主要在外部运算时钟和起始信号的作用下,产生控制其他模块所需的数据调
用、运算同步时钟以及乘法运算结束标志信号等。其 VHDL 语言描述如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY ARICTL IS ——除法运算控制器
PORT(CLK,START:IN STD_LOGIC;
CLKOUT,RSTALL,ARIEND:OUT STD_LOGIC);