8位十进制乘法器.doc
文本预览下载声明
XX 学 院 课 程 论 文
(2012 -2013学年)
课程论文题目:8位乘法器的设计
学生姓名:
提交日期: 2012年 12 月 30 日 学生签名:
学 号 班级 10电本2班 同组成员 课程编号 XZ0202111 专业 电子信息工程 课程名称 EDA技术 任课教师 教师评语:
成绩评定: 分 任课教师签名: 年 月 日
EDA期末考试
设计报告
设计题目:8位乘法器的设计
学校:XX学院
系别:电子信息工程系
班别:10电本2班
姓名:XXX
学号:
组员:
指导老师:
摘摘要:本设计通过对一个8×8的二进制乘法器的设计。在此次设计中该乘法器是由十进制计数器、BCD码(输入)转二进制码、8位寄存器、8位加法器、 16位寄存器、8x1乘法器、二进制码转BCD码(输出显示)7个模块构成的以时序方式设计的8位乘法器,采用移位相加的方法采用移位相加的方法
四、设计步骤:
4.1 利用VHDL语言来实现各个结构模块,其实现的用途及功能如下:
1. 十进制计算模块:使用4个十进制计数模块,输入乘数的十位个位,被乘数的十位个位。
2. BCD码转二进制模块:实现将输入的8位BCD码转化成二进制
3. 8位右移寄存器模块:将乘法运算中的被乘数加载于其中,同时进行乘法运算的移位操作。
4. 8位加法器模块:进行操作数的加法运算。
5. 1位乘法器模块:完成8位与1位的乘法运算。
6. 16位锁存器模块:这是一个16位锁存器,同时也是一个右移寄存器,在时钟信号的控制下完成输入数值的锁存与移位。
7. 二进制转BCD码模块:将16位寄存器的值(积)转化成BCD码,配合数码管显示
4.2 利用VHDL语言来实现各个结构模块如下:
4.2.1十进制加计数器设计:
十进制计数器在每个时钟来临时计数,clk=1时清零,用于输入乘数,被乘数的个位,十位。
Library ieee; --使用ieee设计库 --0到9计数器
Use ieee.std_logic_unsigned.all; - --允许用户对操作符重新定义
Use ieee.std_logic_1164.all; -- 使用std_logic_1164 程序包
Entity cnt10 is -- 实体名cnt10
Port (clk,clr: in std_logic; --clk时钟频率,rst清零
q: out std_logic_vector(3 downto 0)); --四位输出
end cnt10;
architecture behav of cnt10 is -- 结构体名behav
begin
process(clk,clr) –-时钟,清零为敏感信号
variable cqi: std_logic_vector(3 downto 0); --定义计数器
begin
if clr=1 then cqi:=0000; --如果clr=1,则cqi:=0000
elsif clkevent and clk=1 then----否则,若clk为上升沿,即上升沿触发
if cqi=9 then cqi:=0000;--如果cqi=9,则cqi:=0000
else cqi:=cqi+1; --否则cqi自加1
end if;
end if;
q=cqi; 输出
end process;
end behav;
编译cnt10.vhd生成原理图文件,如下图:
图1 cnt10封装图
4.2.2 BCD码转二进制码BCD_B的设计:
将十进制计数器产生的十位和个位合并后,为BCD码,而计算时使用二进制码计算,所以采用该模块来转化。
Library ieee; --使用ieee设计库 --(0到99)BCD码转二进制码
Use ieee.std_logic_unsigned.all;-- 允许用户对操作符重新定义
Use ieee.std_logic_1164.all; -- 使用std_logic_1164 程序包
Entity B
显示全部