文档详情

8位十进制乘法器.doc

发布:2017-01-28约1.27万字共31页下载文档
文本预览下载声明
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
显示全部
相似文档