EDA课程设计报告_-_5位整数乘法器设计
EDA课程设计 5位有符号除法器课设(可打印修改)
矩阵键盘输入模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_arith.ALL;USE IEEE.STD_LOGIC_unsigned.ALL;ENTITY KEYSCAN ISPORT (clk: IN std_logic;rst : IN std_logic;lie : IN std_logic_vector(3 DOWNTO 0);fuhao: IN std_logic;shuchu: OUT std_logic_vector(4 DOWNTO 0);hang: out std_logic_vector(3 DOWNTO 0));END KEYSCAN;ARCHITECTURE arch OF KEYSCAN ISSIGNAL div_cnt : std_logic_vector(24 downto 0);SIGNAL scan_key: std_logic_vector(3 DOWNTO 0);SIGNAL key_code: std_logic_vector(3 DOWNTO 0);SIGNAL shuchu_tmp : std_logic_vector(3 DOWNTO 0); BEGINhang <= scan_key;shuchu <= fuhao&shuchu_tmp;PROCESS(clk,rst)BEGINIF (NOT rst = '1') THENdiv_cnt <= "0000000000000000000000000";ELSIF(clk'EVENT AND clk = '1')THENdiv_cnt <= div_cnt + 1;END IF;END PROCESS;PROCESS(div_cnt(20 downto 19))BEGINCASE div_cnt(20 downto 19) ISWHEN "00"=> scan_key<="1110";WHEN "01"=> scan_key<="1101";WHEN "10"=> scan_key<="1011";WHEN "11"=> scan_key<="0111";END CASE;END PROCESS;PROCESS(clk,rst)BEGINIF (NOT rst = '1') THENkey_code <= "0000";ELSIF(clk'EVENT AND clk='1')THENCASE scan_key ISWHEN "1110" =>CASE lie ISWHEN "1110" =>key_code <= "0000";WHEN "1101" =>key_code <= "0001";WHEN "1011" =>key_code <= "0010";WHEN "0111" =>key_code <= "0011";WHEN OTHERS =>NULL;END CASE;WHEN "1101" =>CASE lie ISWHEN "1110" =>key_code <= "0100";WHEN "1101" =>key_code <= "0101";WHEN "1011" =>key_code <= "0110";WHEN "0111" =>key_code <= "0111";WHEN OTHERS =>NULL;END CASE;WHEN "1011" =>CASE lie ISWHEN "1110" =>key_code <= "1000";WHEN "1101" =>key_code <= "1001";WHEN "1011" =>key_code <= "1010";WHEN "0111" =>key_code <= "1011";WHEN OTHERS =>NULL;END CASE;WHEN "0111" =>CASE lie ISWHEN "1110" =>key_code <= "1100";key_code <= "1101";WHEN "1011" =>key_code <= "1110";WHEN "0111" =>key_code <= "1111";WHEN OTHERS =>NULL;END CASE;WHEN OTHERS =>key_code <= "1111";END CASE;END IF;END PROCESS;PROCESS(key_code)BEGINCASE key_code ISWHEN "0000" =>shuchu_tmp <= "0000";WHEN "0001" =>shuchu_tmp <= "0001";WHEN "0010" =>shuchu_tmp <= "0010";WHEN "0011" =>shuchu_tmp <= "0011";WHEN "0100" =>shuchu_tmp <= "0100";WHEN "0101" =>shuchu_tmp <= "0101";WHEN "0110" =>shuchu_tmp <= "0110";WHEN "0111" =>shuchu_tmp <= "0111";WHEN "1000" =>shuchu_tmp <= "1000";WHEN "1001" =>shuchu_tmp <= "1001";WHEN "1010" =>shuchu_tmp <= "1010";WHEN "1011" =>shuchu_tmp <= "1011";WHEN "1100" =>shuchu_tmp <= "1100";WHEN "1101" =>WHEN "1110" =>shuchu_tmp <= "1110";WHEN "1111" =>shuchu_tmp <= "1111";WHEN OTHERS =>NULL;END CASE;END PROCESS;END arch;输入选择模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY shuru_xz ISPORT(k0:IN STD_LOGIC;DIN:IN STD_LOGIC_VECTOR(4 DOWNTO 0);bcs,cs:OUT STD_LOGIC_VECTOR(4 DOWNTO 0));END shuru_xz;ARCHITECTURE BEHAVE OF shuru_xz ISBEGINPROCESS(k0)BEGINIF( k0='0') THENbcs<=DIN;ELSEcs<=DIN;END IF;END PROCESS;END BEHAVE;除法运算模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY chufa ISPORT(bcs,cs: in std_logic_vector(4 downto 0);shang,yushu: out std_logic_vector(4 downto 0);cuo: out std_logic);END chufa;ARCHITECTURE cfq of chufa isSIGNAL fuhao:STD_LOGIC_VECTOR(4 DOWNTO 0);SIGNAL c0,c1,c2,c3:std_logic_vector(6 downto 0);SIGNAL b0,b1,b2,b3:std_logic_vector(6 downto 0);BEGINPROCESS(cs,bcs)beginb3<= "000" &bcs(3 downto 0); c3<= cs(3 downto 0)& "000";if b3>= c3 and c3/="0000000" thenshang(3) <= '1'; b2 <=b3-c3;elseshang(3) <= '0'; b2 <= b3;end if;c2 <= "0" &cs(3 downto 0)& "00";if b2 >= c2 and c2/="0000000" thenshang(2) <= '1'; b1<= b2-c2;elseshang(2) <= '0'; b1<= b2;end if;c1 <= "00" & cs(3 downto 0) & "0";if b1 >= c1 and c1/="0000000" thenshang(1) <= '1'; b0 <= b1-c1;elseshang(1) <= '0'; b0 <= b1;end if;c0 <= "000" &cs(3 downto 0);if b0 >= c0 and c0/="0000000" thenshang(0) <= '1'; yushu(3 downto 0) <= b0(3 downto 0)-c0(3 downto 0);elseshang(0) <= '0'; yushu(3 downto 0) <= b0(3 downto 0);end if;if cs(3 downto 0)="0000" thencuo<= '1'; elsecuo<='0';end if;fuhao<="00000";fuhao(4)<=bcs(4) XOR cs(4); shang(4)<=fuhao(4);yushu(4)<=bcs(4);end process;end cfq;输出选择模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_arith.ALL;USE IEEE.STD_LOGIC_unsigned.ALL;ENTITY shuchu_xz ISPORT(sw3:IN STD_LOGIC;sw4:IN STD_LOGIC;ok:IN STD_LOGIC;bcs: IN STD_LOGIC_VECTOR(4 DOWNTO 0);cs: IN STD_LOGIC_VECTOR(4 DOWNTO 0);shang: IN STD_LOGIC_VECTOR(4 DOWNTO 0);yushu: IN STD_LOGIC_VECTOR(4 DOWNTO 0);shuchu:OUT STD_LOGIC_VECTOR(4 DOWNTO 0));END shuchu_xz ;ARCHITECTURE xz OF shuchu_xz ISBEGINPROCESS (bcs,cs,shang,yushu,sw3,sw4)BEGINIF (sw3='0'and sw4='1') THENshuchu<=bcs;ELSIF (sw3='1'and sw4='0') THENshuchu<=cs;ELSIF (sw3='1'and sw4='1') THENshuchu<=shang;ELSEIF (ok='0') THENshuchu<=yushu;ELSEshuchu<="00000";END IF;END IF;END PROCESS;END xz;译码模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_arith.ALL;USE IEEE.STD_LOGIC_unsigned.ALL;ENTITY yima ISPORT(date: IN STD_LOGIC_VECTOR(4 DOWNTO 0);fuhao:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);shiwei:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);gewei:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END yima ;ARCHITECTURE ym OF yima ISBEGINPROCESS (date)BEGINIF (date(4)='0') THENfuhao<="11111111";ELSE fuhao<="10111111";END IF;IF (date(3 DOWNTO 0) >"1001" ) THENshiwei<="11111001";ELSE shiwei<="11111111";END IF;CASE date(3 DOWNTO 0) ISWHEN"0000"=>gewei<="11000000";WHEN"0001"=>gewei<="11111001";WHEN"0010"=>gewei<="10100100";WHEN"0011"=>gewei<="10110000";WHEN"0100"=>gewei<="10011001";WHEN"0101"=>gewei<="10010010";WHEN"0110"=>gewei<="10000010";WHEN"0111"=>gewei<="11011000";WHEN"1000"=>gewei<="10000000";WHEN"1001"=>gewei<="10010000";WHEN"1010"=>gewei<="11000000";WHEN"1011"=>gewei<="11111001";WHEN"1100"=>gewei<="10100100";WHEN"1101"=>gewei<="10110000";WHEN"1110"=>gewei<="10011001";WHEN"1111"=>gewei<="10010010";WHEN OTHERS=>gewei<="11111111";END CASE; END PROCESS; END ym;数码管显示模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_unsigned.ALL;ENTITY shumaguan_xs ISPORT( clk : IN STD_LOGIC;fuhao:IN STD_LOGIC_VECTOR(7 DOWNTO 0);shiwei:IN STD_LOGIC_VECTOR(7 DOWNTO 0);gewei:IN STD_LOGIC_VECTOR(7 DOWNTO 0);shuchu: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);sw: OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END;ARCHITECTURE a OF shumaguan_xs ISSIGNAL a : STD_LOGIC_VECTOR(1 DOWNTO 0):="00";BEGINpro1:PROCESS(clk)BEGINIF clk'EVENT AND clk='1' THEN a<=a+1;END IF;END PROCESS pro1;pro2:PROCESS(a,fuhao,shiwei,gewei)BEGINCASE a ISWHEN "00" =>shuchu<=gewei;WHEN "01" =>shuchu<=shiwei;WHEN "10" =>shuchu<=fuhao;WHEN "11" =>shuchu<="11111111";WHEN OTHERS => NULL;END CASE;END PROCESS pro2;pro3:PROCESS(a,fuhao,shiwei,gewei)BEGINCASE a ISWHEN "00" =>sw<="0001";WHEN "01" =>sw<="0010";WHEN "10" =>sw<="0100";WHEN "11" =>sw<="1000";WHEN OTHERS => NULL;END CASE;END PROCESS pro3;END a;整体结构图:。
eda乘法器课程设计
eda乘法器课程设计一、课程目标知识目标:1. 学生能理解EDA乘法器的基本原理和电路结构;2. 学生掌握数字逻辑设计的基本方法,并能够运用Verilog等硬件描述语言设计简单的乘法器;3. 学生了解不同类型乘法器的特点及其适用场合。
技能目标:1. 学生能够运用所学知识,使用EDA工具进行乘法器的原理图绘制及仿真;2. 学生通过实践操作,掌握乘法器电路的调试和优化方法;3. 学生能够分析和解决乘法器设计中出现的问题,提高问题解决能力。
情感态度价值观目标:1. 学生通过学习,增强对电子技术和数字电路的热爱,培养良好的学习兴趣;2. 学生在团队协作中,学会沟通与交流,培养合作精神和集体荣誉感;3. 学生在探索和创新过程中,形成勇于挑战、积极进取的精神风貌。
本课程针对高年级学生,结合课程性质、学生特点和教学要求,将课程目标分解为具体的学习成果。
旨在帮助学生掌握EDA乘法器的基本知识和设计方法,培养实际操作能力和团队协作精神,提高学生的问题解决能力和创新意识。
二、教学内容本章节教学内容主要包括以下几部分:1. EDA乘法器原理及分类- 按照教材相关章节,介绍乘法器的原理、分类及其优缺点;- 分析不同类型乘法器(如算术乘法器、墙上乘法器、Booth乘法器等)的工作原理及应用场景。
2. 数字逻辑设计基础- 回顾数字逻辑设计的基本概念,如逻辑门、触发器、编码器等;- 引导学生运用Verilog等硬件描述语言进行简单乘法器的设计。
3. EDA工具使用- 介绍EDA工具(如Quartus、Vivado等)的使用方法;- 指导学生绘制乘法器原理图、编写测试代码并进行仿真。
4. 乘法器电路设计与实现- 根据教学大纲,安排乘法器电路设计实践操作;- 引导学生进行电路调试、优化,并解决设计过程中出现的问题。
5. 团队协作与成果展示- 将学生分组,进行团队协作实践;- 组织学生进行成果展示,交流设计心得,提高沟通与表达能力。
电子学课程设计报告有符号5位整数乘法器设计与制作
电子学课程设计报告有符号5位整数乘法器设计与制作电子学课程设计报告有符号5位整数乘法器设计与制作姓名:班级:学号:指导教师:一设计指导电子学课程设计〔1〕课程设计的性质、目的和任务创新精神和实践能力二者之中,实践能力是基础和全然。
这是由于创新基于实践、源于实践,实践出真知,实践检验真理。
实践活动是创新的源泉,也是人才成长的必由之路。
通过课程设计的锤炼,要求学生把握电路的一样设计方法,具备初步的独立设计能力,提高综合运用所学的理论知识独立分析和解决问题的能力,培养学生的创新精神。
〔2〕课程设计差不多要求把握现代大规模集成数字逻辑电路的应用设计方法,进一步把握电子仪器的正确使用方法,以及把握利用运算机进行电子设计自动化(EDA)的差不多方法。
〔3〕课程设计指导教材«基础电子电路设计与实践»国防工业出版社〔4〕课程设计内容从1---7题目中任选其一完成。
〔5〕报告要求a.设计的性质、目的和任务;b.设计课题要求;c.设计的内容、电路原理和详细的设计过程;d.调试与仿真结果;e.调试中遇到的问题及解决的方法;f.详谈自己的体会、感想、建议。
〔6〕成绩评定成绩评定按照实际完成情形、题目的难度系数、采纳的实现方法和手段、功能扩展的创新表达以及报告等多方面综合评定。
二设计要求有符号5位整数乘法器设计与制作(难度系数4)设计要求:设计一个两个5位数相乘的乘法器。
用发光二极管显示输入数值,用7段显示器显示十进制结果。
乘数和被乘数分两次输入。
在输入乘数和被乘数时,要求显示十进制输入数据。
输入显示和运算结果显示,采纳分时显示方式进行,可参见运算器的显示功能。
注意,假如除法功能为引用功能模块,那么难度系数将按照1到2.5运算。
#设计提示〔仅供参考〕:通常表示带符号二进制数时,最高位为〝0〞表示〝+〞号,最高位为〝1〞表示〝-〞号,例如,01101表示〝+1101〞,而11101那么表示〝-1101〞。
EDA_-_5位整数乘法器设计
目录1.摘要 (2)1.1 EDA的概念 (2)1.1.1 EDA技术及应用 (2)1.1.2 EDA技术发展趋势 (3)1.2.1 EDA硬件工作平台 (3)1.2.2 EDA 的软件工作平台 (3)2.课程设计的性质、目的和任务 (3)3.题目要求 (4)3.设计步骤 (4)3.1整体原理框图: (4)3.2乘法器整体电路原理图: (5)3.3输入模块: (5)3.4运算模块: (6)3.5显示控制模块: (9)3.6显示模块: (10)4.整体仿真 (15)5.调试中遇到的问题及解决的方法 (15)6.心得体会 (16)7.参考文献 (16)1.摘要1.1 EDA的概念EDA是电子设计自动化(Electronic Design Automation)的缩写。
由于它是一门刚刚发展起来的新技术,涉及面广,内容丰富,理解各异,所以目前尚无一个确切的定义[1]。
但从EDA技术的几个主要方面的内容来看,可以理解为:EDA技术是以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方式设计电子系统到硬件系统的一门新技术。
可以实现逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化,逻辑布局布线、逻辑仿真。
完成对于特定目标芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子系统或专用集成芯片[2]。
EDA技术是伴随着计算机、集成电路、电子系统的设计发展起来的,至今已有30多年的历程。
EDA是电子技术设计自动化,也就是能够帮助人们设计电子电路或系统的软件工具。
该工具可以在电子产品的各个设计阶段发挥作用,使设计更复杂的电路和系统成为可能。
在原理图设计阶段,可以使用EDA中的仿真工具论证设计的正确性;在芯片设计阶段,可以使用EDA中的芯片设计工具设计制作芯片的版图;在电路板设计阶段,可以使用EDA中电路板设计工具设计多层电路板。
实验二 阵列乘法器
实验六阵列乘法器学号1025114016 姓名舒忠明学号1025116030 姓名张宇霆实验目的通过实现n位阵列乘法器,理解阵列乘法器工作原理。
实验设备1.装有ISE10.1的PC机一台2.EDK-3SAISE实验箱一台实验任务1.用verilog描述图1所示的5位无符号数阵列乘法器,先完成功能仿真,再加载到实验箱运行。
2*.在上题的基础上,参考图2、3所示原理,描述6位有符号数阵列乘法器,先完成功能仿真,再加载到实验箱运行。
图1 5位无符号数阵列乘法器图2 n+1位有符号数阵列乘法器图3 5位补码的求补电路原理图实验报告格式一、实验目的二、实验设备三、实验内容1. 用verilog描述图1所示的5位无符号数阵列乘法器,先完成功能仿真,再加载到实验箱运行。
1.模块代码module hw_mul(x, y, out);parameter n = 16;input [n-1:0]x, y;output [n*2-1:0]out;genvar i, j, k, l;wire [n:0]tmp_sun[n-1:0], tmp_out[n-1:0];wire [n:0]tmp_x;// 1. generate语法有generate for, genreate if和generate case三种 2. generate for语句必须有genvar关键字定义for的变量 3. for 的内容必须加begin和end 4. 必须给for语段起个名字assign tmp_x = {1'b0,x};// 1'b0 表示1位宽,2进制,数字0assign out[0] = tmp_x[0] & y[0];generateassign tmp_out[0][0] = 1'b0;for(i=0;i<n;i=i+1)//循环相加顶层乘数的前两位与上被乘数的部分积.begin:add_bttop_m tm (tmp_x[i+1], y[0], tmp_x[i], y[1], tmp_out[0][i], tmp_sun[0][i], tmp_out[0][i+1]);//module top_m(m0, q0, m1, q1, cin, sun, cout);顶层乘法单元endassign out[1] = tmp_sun[0][0];assign tmp_sun[0][n] = tmp_out[0][n];for(j=2;j<n;j=j+1)//从第三位开始的每一位与上被乘数,然后跟上一层的部分积结果相加.begin:ftffor(k=0;k<n;k=k+1)begin:add_bbbtm_m bm (tmp_sun[j-2][k+1], tmp_x[k], y[j], tmp_out[j-1][k], tmp_sun[j-1][k], tmp_out[j-1][k+1]);//module btm_m(sunin, m, q, cin, sun, cout);底层乘法单元endassign out[j] = tmp_sun[j-1][0];assign tmp_sun[j-1][n] = tmp_out[j-1][n];endfor(l=n;l<n*2;l=l+1)begin:add_oassign out[l] = tmp_sun[n-2][l-n+1];endendgenerateendmodulemodule top_m(m0, q0, m1, q1, cin, sun, cout);//顶层乘法单元input m0, m1, q0, q1;input cin;output sun, cout;//sun:提供给下一层的和(↓);cout:提供给下一层的进位输出(↙)wire x, y;assign x = m0 & q0;assign y = m1 & q1;full_add fa (x, y, cin, sun, cout);//一位全加器endmodulemodule btm_m(sunin, m, q, cin, sun, cout);//下层乘法单元input sunin, m, q, cin;//sunin:来自上一层的和输出(↓);m,q:两个乘数在当层对应的位(←);cin:来自上一层的进位输出(↙)output sun, cout;//sun:提供给下一层的和(↓);cout:提供给下一层的进位输出(↙)wire y;assign y = m & q;full_add fa (sunin, y, cin, sun, cout);//一位全加器endmodulemodule full_add(x, y, cin, sun, cout);//一位全加器input x, y, cin;output reg sun, cout;always@(x, y, cin)beginsun <= x^y^cin;cout <= x&y | x&cin | y&cin;endendmodule2.功能仿真测试代码module TEST;// Inputsreg [4:0] x;reg [4:0] y;// Outputswire [9:0] out;// Instantiate the Unit Under Test (UUT)zhenliecf uut (.x(x),.y(y),.out(out));initial begin// Initialize Inputsx = 0;y = 0;// Wait 100 ns for global reset to finish#100;// Add stimulus hereendalways #10 x[0]=~x[0];always #20 x[1]=~x[1];always #30 x[2]=~x[2];always #40 x[3]=~x[3];always #50 x[4]=~x[4];always #60 y[0]=~y[0];always #70 y[1]=~y[1];always #80 y[2]=~y[2];always #90 y[3]=~y[3];always #100 y[4]=~y[4];endmodule3.功能仿真测试时序图参考资料12位LED灯12位拨动开关。
eda乘法器课程设计
eda乘法器课程设计一、课程目标知识目标:1. 学生能理解EDA乘法器的基本原理和设计流程;2. 学生能掌握数字逻辑设计的基本方法,并运用Verilog HDL语言实现EDA 乘法器;3. 学生了解不同类型乘法器的优缺点,并能够进行比较和分析。
技能目标:1. 学生能够运用所学知识,独立完成EDA乘法器的原理图设计和代码编写;2. 学生能够利用相关软件工具进行仿真测试,验证乘法器的功能正确性和性能指标;3. 学生能够通过小组合作,共同解决乘法器设计过程中遇到的问题,提高团队协作能力。
情感态度价值观目标:1. 学生培养对数字电路设计的兴趣,增强学习电子信息的积极性;2. 学生在课程学习过程中,培养严谨的科学态度和良好的工程素养;3. 学生通过小组合作,培养团队精神,学会尊重和倾听他人意见,提高沟通表达能力;4. 学生能够认识到电子信息技术在国家发展和社会进步中的重要作用,增强社会责任感和使命感。
二、教学内容1. 数字逻辑设计基础:介绍逻辑门、组合逻辑电路和时序逻辑电路的基本原理,为乘法器设计奠定基础。
2. Verilog HDL语言:讲解Verilog的基本语法、数据类型和常用语句,使学生掌握用Verilog进行数字电路设计的方法。
3. EDA乘法器原理:分析并讲解不同类型的乘法器(如Booth乘法器、Wallace树等)的原理和结构,对比优缺点。
- 教材章节:第三章《数字系统的设计方法》4. 乘法器设计流程:- 设计原理图:指导学生根据乘法器原理绘制原理图;- 编写Verilog代码:指导学生使用Verilog语言实现乘法器功能;- 仿真测试:教授学生使用相关软件工具(如ModelSim)进行仿真测试,验证设计的正确性。
- 教材章节:第四章《数字系统的实现与验证》5. 小组讨论与实践:组织学生进行小组讨论,共同解决设计过程中遇到的问题,提高实际操作能力。
6. 性能分析与优化:指导学生分析乘法器的性能指标(如速度、面积等),探讨优化方案。
EDA课程设计论文——乘法器解读
目录一、综述 (2)乘法器总体设计 (2)二、设计内容与仿真结果 (2)1. 防抖存数部分 (2)小结 (5)2. 输入模块部分 (6)3. LED显示部分 (6)4. 乘法部分 (7)小结 (9)5. 选择显示部分 (10)6. 数码管显示部分 (10)7. 整体结果 (12)小结 (12)8. 附2进制转BCD码 (13)小结 (14)三、总结 (15)一乘法器总体设计本设计由防抖存数模块,输入模块,乘法模块,LED显示模块,选择显示模块以及数码管显示模块组成。
可实现两个5位数相乘。
用发光二极管显示输入数值,用7段显示器显示十进制结果。
乘数和被乘数分两次由实验箱上的按键输入,同时在数码管显示分别显示乘数与被乘数。
输入显示和计算结果显示,采用分时显示方式进行,可参见计算器的显示功能,显示采用16进制。
KEY1~KEY5为数A、数B的输入端,KEY6表示乘号,KEY7表示等号。
初始时刻数码管显示“00”,此时可直接输入数A,数码管显示数A,此后按下KEY6,表示数A输入完毕,此后输入为数B,数码管显示数B,数B输入完毕,按下KEY7,对输入的两数进行乘法计算,并由数码管显示结果。
各模块均由VHDL语言编写,例化成元件后采用原理图法进行连接。
可简单清晰地描述各模块之间信号的传递。
实验箱主要由EPM7128SLC84-15及其外围电路组成,箱上LED及数码管均为共阳极接法,按键按下时输出高电平。
乘法器整体设计如下图所示:一、设计内容与仿真结果1.防抖存数部分本设计采用按键输入,所以需对按键进行防抖,同时,由于按键按下后会弹起,不能保持输出高电平,所以须对输入处理,此处曾设计了两种方案:方法一、采用RS触发器搭建而成,R端接地,在时钟上升沿触发下,S端输入高电平(按下按键)时Q端输出为高,此后S端输入低电平(松开按键),Q端保持输出为高。
用RS触发器搭建的实现方式如图:但此方法在输入A时置为高的位,输入B时仍为1,此时需要清零。
五位阵列乘法器logisim实验报告
五位阵列乘法器logisim实验报告引言:在数字电路设计中,乘法器是一种非常重要的电路。
为了实现高效的乘法运算,我们常常需要使用乘法器进行乘法操作。
本实验旨在使用五位阵列乘法器logisim进行乘法器的设计与实现。
设计与实现:本次实验中,我们使用logisim软件进行五位阵列乘法器的设计与实现。
首先,我们需要搭建一个五位的输入端,来输入待相乘的两个数。
然后,我们需要将输入的两个数分别与五个乘法器相连,以实现乘法运算。
每个乘法器都会将两个输入相乘得到一个结果,并输出给下一级电路。
在乘法器的设计中,我们使用了多个与门和全加器。
与门用于判断两个输入是否都为1,从而判断是否需要进行相乘操作。
全加器用于将两个输入相乘的结果相加,并输出给下一级电路。
通过多级的与门和全加器的连接,我们可以实现五位数的相乘运算。
结果与分析:经过实验,我们成功实现了五位阵列乘法器的设计与实现。
通过输入不同的五位数,我们可以得到相应的乘法结果。
在logisim软件中,我们可以直观地观察到乘法器的运行过程,以及每一级电路的工作情况。
本实验的设计与实现对于理解乘法器的工作原理具有重要的意义。
通过logisim软件的模拟,我们可以更好地理解数字电路的运行过程,并加深对乘法器的认识。
结论:通过本次实验,我们成功地设计与实现了五位阵列乘法器。
通过logisim软件的模拟,我们可以直观地观察乘法器的工作过程,并得到相应的乘法结果。
这对于理解乘法器的工作原理以及数字电路的设计与实现具有重要的意义。
通过本次实验,我们不仅加深了对乘法器的认识,同时也提高了对logisim软件的使用能力。
在未来的学习和工作中,我们可以更加熟练地使用logisim软件进行数字电路的设计与模拟。
参考文献:[1] logisim软件官方网站[2] 数字电路设计与实验教程,XX出版社,20XX年。
乘法器eda课程设计
乘法器eda课程设计一、教学目标本课程的学习目标包括知识目标、技能目标和情感态度价值观目标。
知识目标要求学生掌握乘法器的基本原理和操作方法;技能目标要求学生能够运用乘法器解决实际问题,并进行简单的故障排查;情感态度价值观目标要求学生培养对科学技术的兴趣和好奇心,增强创新意识和团队合作能力。
二、教学内容根据课程目标,本章教学内容主要包括乘法器的基本原理、结构与功能、操作方法、应用案例以及故障排查。
具体安排如下:1.第一节:乘法器的基本原理与结构,介绍乘法器的组成、工作原理和主要性能指标。
2.第二节:乘法器的功能与操作,讲解乘法器的各项功能及其操作方法。
3.第三节:乘法器在实际中的应用,分析乘法器在不同领域的应用案例。
4.第四节:乘法器的故障排查与维护,教授学生如何进行故障排查和日常维护。
三、教学方法本课程采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。
讲授法用于讲解基本原理和操作方法;讨论法用于引导学生深入思考和探讨问题;案例分析法用于分析乘法器在实际中的应用;实验法用于让学生亲自动手操作,提高实践能力。
四、教学资源本课程所需教学资源包括教材、参考书、多媒体资料和实验设备。
教材和参考书用于提供理论知识,多媒体资料用于辅助教学,使学生更直观地了解乘法器的工作原理和操作方法。
实验设备则是学生进行实践操作的重要工具,包括各种类型的乘法器及其配件。
五、教学评估本课程的评估方式包括平时表现、作业和考试三个部分,以全面反映学生的学习成果。
平时表现主要考察学生的课堂参与度、提问和回答问题的情况;作业分为课后练习和项目任务,要求学生在规定时间内完成,以巩固所学知识;考试包括期中考试和期末考试,采用闭卷考试形式,覆盖课程所有知识点。
评估方式应客观、公正,能够全面反映学生的学习成果。
六、教学安排本课程的教学安排如下:共计16周,每周2课时。
教学地点为教室,教学进度安排合理、紧凑,确保在有限的时间内完成教学任务。
五人表决器_九九乘法表__交通灯(EDA报告)讲述
实验一五人表决器的设计一、实验目的1、了解和初步掌握ISPlever软件的基本操作方法以及电子线路的程序编写abel语言的编写。
2、通过实验,加深电路设计的概念以及了解计算机辅助设计分析的过程3、培养学生的创新能力以及理论知识的应用能力。
二、实验内容及步骤本实验要求利用ISPLEVER软件完成对五人表决器的设计及仿真,表决规则是,多数胜少数。
分析题意,我们可以知道此次仿真应有五个输入端口,一个输出端口。
分别设置其A,B,C,D,E为输入端口,F为输出端口。
故分析可知其真值表如下所示:图1:无人表决器真值表可分析:无人中任意三人通过则表决可以通过,故得到其逻辑表达式为F=ABC+ABD+ABE+ACD+ACE+ADE+BCD+BCE+BDE+CDE实验步骤:1、打开ISPLEVER软件,新建一个项目,并命名为Untitled.syn。
2、在新建立的项目的基础上新建一个原理图文件,并为之命名为biaojueqi.sch。
用软件绘制原理图如下所示:图2:五人表决器原理图3、在顶层原理图的基础上,为模块编写ABEL语言程序,原理图中建立了WTF模块,新建立一个程序文件wtf.abl。
编写此项目的仿真文件程序biaojueqi.abv得到:对此项目文件进行仿真,得到仿真结果如图:图3:实验结果仿真分析三、实验结果分析本次实验设计的是五人表决器,要求A,B,C,D,E五个输入中只要有三个以上为1,那么实验的输出即为1。
通过分析,我们得到了表决器输出的逻辑表达式,然后根据表达式完成了VOTE项目的设计,项目设计后仿真得到,A,B,C,D,E全为1时则全票通过;A,B,D,E为1,C为0时F为1;A,B,E 为1,C,D为0时F为1;A,B为1,C,D,E为0时F为0;A,B,C,D为0,E 为1时输出F为0;当A,B,C,D,E全为0时,则F=0;经过TEST文件来对程序检测,发现设计基本可以完成表决任务。
四、实验小结作为EDA实验的第一个实验,在完成的过程中仍存在着操作不娴熟,操作失误等问题。
乘法器(EDA)
基于FPGA的乘法器设计课程设计报告题目名称:基于FPGA的乘法器设计学生姓名:**学号: **********专业年级:电子信息工程2011级指导教师:***时间: 2014.1.5基于FPGA的乘法器设计一、设计任务与要求:1)有输入端口“读入”接收读入指示信号;“读入”信号为“1”时开始读数,信号为“0”时停止读数;2)乘数为位宽16bit的二进制有符号数;3)两个16bit乘数先后经1bit位宽端口串行输入系统;4)两个乘数的16bit均输入完成后送交后续模块做乘法运算;5)乘法运算部分要求利用流水线架构实现;乘法结果保留24bit;6)结果输出时,有指定管脚给出指示信号;7)有“同步复位”端口(1bit),此端口输入“1”后,整个系统强制回归到初始状态;二、方案设计与论证:2.1组合电路乘法器组合电路乘法器采用了很多的寄存器和加法器进行运算,占用了很大的资源,稳定性也比较低,思路复杂难与设计。
2.2基于时序电路的位移相加型16位硬件乘法器基于时序电路的位移相加型16位硬件乘法器从工程实际设计上来说,它往往会利用时序逻辑设计的方法来实现,属于时序逻辑范畴。
其思路清析,好理解,稳定性较高,具有很好的工程实际性,因此选用本方案。
三、基于时序电路的位移相加型16位硬件乘法器基本原理:该乘法器是由16位加法器构成的以时序方式设计的16位乘法器。
其乘法原理是:乘法通过逐项移位相加原理来实现,从被乘数的最低位开始,若为1,则乘数左移后与上一次的和相加;若为0,左移后以全零相加,直至被乘数的最高位。
从图10-2的逻辑图及其乘法操作时序图图1(示例中的相乘数为C6H和FDH )上可以清楚地看出此乘法器的工作原理。
图2中,START信号的上跳沿及其高电平有两个功能,即32位寄存器清零和被乘数A[15..0]向移位寄存器SREG16B加载;它的低电平则作为乘法使能信号。
CLK为乘法时钟信号。
当被乘数被加载于16位右移寄存器SREG16B后,随着每一时钟节拍,最低位在前,由低位至高位逐位移出。
EDA实验_乘法器的设计
XXXX大学计算机科学学院实验/上机报告一、实验目的1、通过8位移位相加乘法器的设计,理解可编程逻辑系统设计中的自顶向下设计思想;2、进一步巩固利用状态机实现同步时序系统的知识;二、实验环境硬件:PC机、便携式EDA/SOPCDSP实验系统软件:Quartus II 7.0 开发系统三、实验内容1、完成8位移位相加乘法器的VHDL设计并完成功能仿真;2、完成键盘扫描器的设计,并用其实现8位移位相加乘法器在板子上的下载控制。
四、实验过程设计思想:1、分析问题,确定该乘法器工作的基本原理是首先生成部分积,再将这些部分积相加得到乘积。
设计的基本思想为:从被乘数的最低位开始移位,若移出位为1,则乘数左移后与上一次的和相加,若移出位为0,则乘数左移后以全0相加,循环上述操作,直至被乘数的最高位。
主要是进行移位、相加两项操作的重复。
2、根据键盘扫描器的工作原理可知,首先要判断行和列输出的是"1"还是"0",为了识别按下键后显示的是哪个数字,给板子上的按键用数字代替(0 - 9、A - F),最后对各个模块进行设计,然后生成元件,便于与乘法器相连。
实验步骤:内容一、乘法器设计根据乘法器工作原理可知,确定输入与输出。
由于本实验进行的是8位的乘法器的设计,所以输入的两个乘数分别为din[7 .. 0]、din1 [7 .. 0],另外clk、clr作为控制输入,dout[15..0]作为输出。
建立工程,编写VHDL源程序,并生成相应的底层文件。
由分析可知乘法器原理框图包括右移寄存器(sreg8b)、16位寄存器(reg16b)、选通与门(andarith)、8位加法器(adder8)四部分。
其中,sreg8b对被乘数进行右移移位,andarith对乘数与被乘数相乘过程中的部分积进行相与,adder8对右移寄存器的移位位数进行计数,reg16b对乘数和被乘数相乘之后的结果进行存储。
eda乘法器设计
实验四乘法器设计一、实验目的1、掌握利用移位相加方法实现乘法运算的基本原理;2、通过一个4×4的二进制乘法器的设计,学习利用VHDL语言来描述简单的算法,3、熟悉VHDL语言的变量数据对象在描述算法中的作用;二、实验原理实现乘法运算的算法很多,比较常见的有以下几种方法:移位相加、查询表、逻辑树等。
这里主要介绍移位相加的方法。
这种方法实现起来相对简单,目前大多数的单片机和微处理器都采用这种方法。
但是这种方法的最大缺点是速度慢,8位乘法需要8个时钟周期才能得到结果。
根据运算过程中左移或者右移对象的不同,采用移位相加实现乘法运算又有两种算法:(1)部分和固定、部分积左移法(算法1)(2)部分和右移、部分积固定法(算法2)无论是从用时方面还是占用硬件资源方面看,算法2都要优于算法1。
在算法2中,部分积各位是固定的,部分和逐步右移。
下面以4位乘法运算为例,说明其工作原理。
假设4位被乘数X为X3X2X1X0, 乘数Y为Y3Y2Y1Y0, 4×4位结果得到8位的乘积S,将它存放在一个9位累加寄存器中。
累加器初始值为全零,即“000000000”。
算法2的运算过程如下:(1)移出乘数的最低位Y0乘以被乘数X得到第1个部分积S0;(2)第1个部分积S0与累加器S中高4位相加,结果仍然存放在累加器中,即S<=S+S0; (3)将累加器中内容向右移1位,结果仍然存放在累加器中;(4)移出乘数的次低位Y1, 乘以被乘数X得到第2个部分积S0;(5)第2个部分积S0 再与累加器S中高4位相加,结果仍然存放在累加器中,即S<=S+S0;……如此反复直到乘数中所有的位都被移出,第4个部分和与累加器中的值相加后右移,得到的和就是乘积。
算法2的流程图如下图4.1所示:在本实验中将设计一个如下图4.2所示的4位乘法器,输入信号X和Y分别是4位乘数和被乘数Y,CLK为输入时钟信号,START 是乘法启动信号。
EDA计算器课程设计
EDA计算器课程设计一、课程目标知识目标:1. 学生能理解EDA计算器的基本原理和功能,掌握其操作方法。
2. 学生能够运用EDA计算器进行简单的数据分析和解决实际问题。
3. 学生掌握EDA计算器在工程和数据领域的应用场景。
技能目标:1. 学生能够熟练使用EDA计算器的各项功能,如数据处理、图表生成等。
2. 学生能够运用EDA计算器解决实际问题时,具备分析和解决的能力。
3. 学生能够通过EDA计算器,提高自己的逻辑思维和创新能力。
情感态度价值观目标:1. 学生通过学习EDA计算器,培养对工程和数据科学的兴趣,激发学习的内驱力。
2. 学生在学习过程中,养成合作、探究的学习习惯,形成良好的团队协作意识。
3. 学生能够认识到科技发展对社会进步的重要性,增强社会责任感和使命感。
课程性质分析:本课程为实践性较强的课程,以学生动手操作和实际应用为主,注重培养学生的实际操作能力和解决问题的能力。
学生特点分析:学生处于好奇心强、求知欲旺盛的阶段,对新鲜事物有较高的兴趣。
他们具备一定的计算机操作基础,但EDA计算器的使用还需进一步学习。
教学要求:1. 教师需注重理论与实践相结合,引导学生学以致用。
2. 教师应关注学生的个体差异,提供有针对性的指导。
3. 教学过程中要充分调动学生的积极性,鼓励学生主动探索和解决问题。
二、教学内容1. EDA计算器概述- 计算器的发展历程- EDA计算器的定义与特点2. EDA计算器的功能与操作- 数据处理功能:数据录入、排序、筛选等- 图表生成:柱状图、折线图、饼图等- 基本运算:加减乘除、百分比、求和等3. EDA计算器在实际应用案例- 工程领域:数据分析、项目管理等- 数据科学:数据挖掘、预测分析等4. 教学内容的安排与进度- 第一课时:EDA计算器概述及基本功能介绍- 第二课时:数据处理功能的操作与实践- 第三课时:图表生成功能的操作与实践- 第四课时:基本运算操作及实际应用案例5. 教材章节及内容列举- 第一章:计算器概述- 第一节:计算器发展历程- 第二节:EDA计算器定义与特点- 第二章:EDA计算器功能与操作- 第一节:数据处理功能- 第二节:图表生成功能- 第三节:基本运算操作- 第三章:EDA计算器在实际应用案例- 第一节:工程领域应用- 第二节:数据科学应用教学内容确保科学性和系统性,以培养学生的实际操作能力和解决问题的能力为核心,注重理论与实践相结合。
EDA课程设计论文——乘法器解读
目录一、综述 (2)乘法器总体设计 (2)二、设计内容与仿真结果 (2)1. 防抖存数部分 (2)小结 (5)2. 输入模块部分 (6)3. LED显示部分 (6)4. 乘法部分 (7)小结 (9)5. 选择显示部分 (10)6. 数码管显示部分 (10)7. 整体结果 (12)小结 (12)8. 附2进制转BCD码 (13)小结 (14)三、总结 (15)一乘法器总体设计本设计由防抖存数模块,输入模块,乘法模块,LED显示模块,选择显示模块以及数码管显示模块组成。
可实现两个5位数相乘。
用发光二极管显示输入数值,用7段显示器显示十进制结果。
乘数和被乘数分两次由实验箱上的按键输入,同时在数码管显示分别显示乘数与被乘数。
输入显示和计算结果显示,采用分时显示方式进行,可参见计算器的显示功能,显示采用16进制。
KEY1~KEY5为数A、数B的输入端,KEY6表示乘号,KEY7表示等号。
初始时刻数码管显示“00”,此时可直接输入数A,数码管显示数A,此后按下KEY6,表示数A输入完毕,此后输入为数B,数码管显示数B,数B输入完毕,按下KEY7,对输入的两数进行乘法计算,并由数码管显示结果。
各模块均由VHDL语言编写,例化成元件后采用原理图法进行连接。
可简单清晰地描述各模块之间信号的传递。
实验箱主要由EPM7128SLC84-15及其外围电路组成,箱上LED及数码管均为共阳极接法,按键按下时输出高电平。
乘法器整体设计如下图所示:一、设计内容与仿真结果1.防抖存数部分本设计采用按键输入,所以需对按键进行防抖,同时,由于按键按下后会弹起,不能保持输出高电平,所以须对输入处理,此处曾设计了两种方案:方法一、采用RS触发器搭建而成,R端接地,在时钟上升沿触发下,S端输入高电平(按下按键)时Q端输出为高,此后S端输入低电平(松开按键),Q端保持输出为高。
用RS触发器搭建的实现方式如图:但此方法在输入A时置为高的位,输入B时仍为1,此时需要清零。
EDA实验报告含结果图
EDA电子课程实验报告专业:班级:姓名:学号:实验一四人表决器一实验目的1、熟悉Quartus II软件的使用。
2、熟悉EDA-IV实验箱。
3、熟悉EDA开发的基本流程。
二硬件需求1、RC-EDA-IV型实验箱一台;2、RC-EDA-IV型实验箱配套USB-Blaster下载器一个;3、PC机一台。
三实验原理所谓表决器就是对于一个行为,由多个人投票,如果同意的票数过半,就认为此行为可行;否则如果否决的票数过半,则认为此行为无效。
四人表决器顾名思义就是由四个人来投票,当同意的票数大于或者等于3人时,则认为同意;反之,当否决的票数大于或者等于2人时,则认为不同意。
实验中用4个拨挡开关来表示4个人,当对应的拨挡开关输入为‘1’时,表示此人同意;否则若拨挡开关输入为‘0’时,则表示此人反对。
表决的结果用一个LED表示,若表决的结果为同意,则LED被点亮;否则,如果表决的结果为反对,则LED不会被点亮。
四实验内容VHDL程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;--------------------------------------------------------------------entity EXP3 isport(k1,K2,K3,K4 : in std_logic;ledag : out std_logic_vector(3downto 0);m_Result : out std_logic);end EXP3;--------------------------------------------------------------------architecture behave of EXP3 issignal K_Num : std_logic_vector(2 downto 0); signal K1_Num,K2_Num: std_logic_vector(2 downto 0); signal K3_Num,K4_Num: std_logic_vector(2 downto 0);beginprocess(K1,K2,K3,K4)beginK1_Num<='0'&'0'&K1;K2_Num<='0'&'0'&K2;K3_Num<='0'&'0'&K3;K4_Num<='0'&'0'&K4;end process;process(K1_Num,K2_Num,K3_Num,K4_Num,)beginK_Num<=K1_Num+K2_Num+K3_Num+K4_Num;end process;process(K_Num) beginif(K_Num>2) thenm_Result<='1';elsem_Result<='0';end if;end process;end behave;实验电路实验二格雷码转换一实验目的1、了解格雷码变换的原理。
5位补码乘法器的设计与实现
5位补码乘法器的设计与实现设计原理:1.5位补码的表示:在5位补码中,最高位为符号位。
当符号位为0时,表示正数;当符号位为1时,表示负数。
其余4位表示数值。
因此,5位补码的取值范围为-15至+152.乘法运算的原理:乘法运算的基本原理是,将两个数的补码相乘,然后根据符号位和进位情况来确定乘积的符号。
具体步骤如下:-对被乘数和乘数取绝对值得到两个正数。
-将两个正数相乘,得到乘积的绝对值。
-根据被乘数和乘数的符号位,决定乘积的符号。
3.5位补码乘法器的实现:-将乘数和被乘数的符号位扩展到4位,并记录符号位的乘积。
-将乘数和被乘数的绝对值送入4位补码乘法器进行乘法运算,得到四位乘积。
-将四位乘积和符号位的乘积相加,得到5位补码乘积。
实现过程:1.5位补码乘法器的输入端包括两个5位补码(A和B)。
2. 对A和B的符号位进行扩展,得到A_sign和B_sign,分别表示A 和B的符号位。
3. 对A和B的数值位取绝对值,得到A_abs和B_abs,分别表示A 和B的绝对值。
4. 将A_abs和B_abs送入4位补码乘法器进行乘法运算,得到四位乘积P。
5. 将A_sign和B_sign相异或,得到符号位的乘积S_sign。
6. 将四位乘积P和S_sign进行相加运算,得到五位补码乘积P_final。
7. 输出五位补码乘积P_final。
总结:5位补码乘法器是通过串联多个4位补码乘法器来实现的。
在乘法运算过程中,需要注意符号位的扩展和相加运算的处理。
通过这种方法,我们可以方便地进行5位补码的乘法运算。
当然,在实际中,还需要将5位补码乘法器与其他逻辑电路进行组合,以实现更复杂的数学运算。
有符号5位整数乘法器设计与制作
信息与工程学院EDA课程设计报告有符号5位整数乘法器设计与制作指导老师:学生姓名:学生学号:2009年12月25号一、课程设计的性质、目的和任务创新精神和实践能力二者之中,实践能力是基础和根本。
这是由于创新基于实践、源于实践,实践出真知,实践检验真理。
实践活动是创新的源泉,也是人才成长的必由之路。
通过课程设计的锻炼,要求学生掌握电路的一般设计方法,具备初步的独立设计能力,提高综合运用所学的理论知识独立分析和解决问题的能力,培养学生的创新精神。
二、设计课题要求掌握现代大规模集成数字逻辑电路的应用设计方法,进一步掌握电子仪器的正确使用方法,以及掌握利用计算机进行电子设计自动化(EDA)的基本方法。
三、设计的内容、电路原理和详细的设计过程1、设计内容及要求设计一个两个5位数相乘的乘法器。
用发光二极管显示输入数值,用7段显示器显示十进制结果。
乘数和被乘数分两次输入。
在输入乘数和被乘数时,要求显示十进制输入数据。
输入显示和计算结果显示,采用分时显示方式进行,可参见计算器的显示功能。
2、电路原理2.1乘法器原理图数据控制1控制2原理说明:通常表示带符号二进制数时,最高位为“0”表示“+”号,最高位为“1”表示“--”号,例如,01101表示“+1101”,而11101则表示“-1101”。
乘法运算通常采用移位相加方法实现。
最终符号则用两个数的最高位采用“异或”逻辑得到。
2.2 顶层原理图输入模块 乘法运算数据选择器2—10进制转换带消零功能的显示译码 数码显示原理图说明:通过一个"输入模块"以及两个控制信号:“乘号”、“等号”将输入数据分别送到"乘法模块"的两个输入端,当控制信号“等于”号出现时,脉冲信号通过“与门”作用于"乘法模块",运算开始。
与此同时,通过控制信号:“乘号”、“等号”来控制"数据选择器",分时将乘数、被乘数、计算结果送到"2--10进制转换模块"中;在"2--10进制转换模块"中,对数据进行转换,转为10进制,然后将数据送入“显示译码模块”中进行译码,最终将结果通过数码管显示出来。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
有符号5位整数乘法器设计与制作1.课程设计的性质、目的和任务 (1)2.题目要求 (1)3.设计步骤 (2)3.1整体原理框图: (2)3.2乘法器整体电路原理图: (2)3.3输入模块: (2)3.4运算模块: (3)3.5显示控制模块: (6)3.6显示模块: (7)4.整体仿真 (12)5.调试中遇到的问题及解决的方法 ........................................ 错误!未定义书签。
6.心得体会................................................................................... 错误!未定义书签。
7.建议:....................................................................................... 错误!未定义书签。
1.课程设计的性质、目的和任务创新精神和实践能力二者之中,实践能力是基础和根本。
这是由于创新基于实践、源于实践,实践出真知,实践检验真理。
实践活动是创新的源泉,也是人才成长的必由之路。
通过课程设计的锻炼,要求学生掌握电路的一般设计方法,具备初步的独立设计能力,提高综合运用所学的理论知识独立分析和解决问题的能力,培养学生的创新精神。
2.题目要求设计一个两个5位数相乘的乘法器。
用发光二极管显示输入数值,用7段显示器显示十进制结果。
乘数和被乘数分两次输入。
在输入乘数和被乘数时,要求显示十进制输入数据。
输入显示和计算结果显示,采用分时显示方式进行,可参见计算器的显示功能3.设计步骤3.1整体原理框图:3.2乘法器整体电路原理图:3.3输入模块:模块说明:由 CH,DH控制数据的输入,由SHUJU端输入数据,当CH,DH为0,0时输入被乘数,由输出端A输出,当按下“乘号键CH”即CH,DH为1,0时输入乘数,由输出端B输出,当RESET为0时输出端清零。
VHDL程序代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY shuru ISPORT(CH,DH,RESET,CLK:IN STD_LOGIC;shuju:IN STD_LOGIC_VECTOR(4 DOWNTO 0);A,B:OUT STD_LOGIC_VECTOR(4 DOWNTO 0));END shuru;ARCHITECTURE behave OF shuru ISBEGINPROCESS(CH,DH,shuju,RESET,CLK)BEGINIF CLK'EVENT AND CLK='1' THENIF RESET='1' THENA<="00000";B<="00000";ELSEIF CH='0' AND DH='0' THENA<=shuju;ELSIF CH='1' AND DH='0' THENB<=shuju;ELSE NULL;END IF;END IF;END IF;END PROCESS;END behave;3.4运算模块:模块说明:分别由AO和BO端接收被乘数和乘数,由CJ端输出带符号位的二进制乘积结果。
此模块由三个子模块组成:“数字与符号分离子模块”,“乘法运算子模块”及“数字与符号重组子模块”。
VHDL程序代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY yunsuan ISPORT(A0:IN STD_LOGIC_VECTOR(4 DOWNTO 0);B0:IN STD_LOGIC_VECTOR(4 DOWNTO 0);CJ:OUT STD_LOGIC_VECTOR(8 DOWNTO 0));END yunsuan;ARCHITECTURE BEHAVE OF yunsuan ISCOMPONENT sfflPORT(A,B:IN STD_LOGIC_VECTOR(4 DOWNTO 0);FH:OUT STD_LOGIC;C,D:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END COMPONENT;COMPONENT MULPORT(E,F:IN STD_LOGIC_VECTOR(3 DOWNTO 0);Q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END COMPONENT;COMPONENT sfczPORT(Q:IN STD_LOGIC_VECTOR(7 DOWNTO 0);FHO:IN STD_LOGIC;CJO:OUT STD_LOGIC_VECTOR(8 DOWNTO 0)); END COMPONENT;SIGNAL C1,D1:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL FHW:STD_LOGIC;SIGNAL OUT1:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGINU1:sffl PORT MAP(A=>A0,B=>B0,C=>C1,D=>D1,FH=>FHW); U2:MUL PORT MAP(E=>C1,F=>D1,Q=>OUT1);U3:sfcz PORT MAP(Q=>OUT1,FHO=>FHW,CJO=>CJ);END BEHAVE;数字与符号分离子模块:程序代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY sffl ISPORT(A,B:IN STD_LOGIC_VECTOR(4 DOWNTO 0);FH:OUT STD_LOGIC;C,D:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END sffl;ARCHITECTURE behave OF sffl ISBEGINC<=A(3 DOWNTO 0);D<=B(3 DOWNTO 0);FH<=A(4) XOR B(4);END behave;乘法运算子模块:程序代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY MUL ISPORT(E,F:IN STD_LOGIC_VECTOR(3 DOWNTO 0);Q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END MUL;ARCHITECTURE behave OF MUL ISSIGNAL Q1:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL Q2:STD_LOGIC_VECTOR(4 DOWNTO 0); SIGNAL Q3:STD_LOGIC_VECTOR(5 DOWNTO 0); SIGNAL Q4:STD_LOGIC_VECTOR(6 DOWNTO 0); SIGNAL FF0:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL FF1:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL FF2:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL FF3:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINFF0<=F(0)&F(0)&F(0)&F(0);FF1<=F(1)&F(1)&F(1)&F(1);FF2<=F(2)&F(2)&F(2)&F(2);FF3<=F(3)&F(3)&F(3)&F(3);Q1<=E AND FF0;Q2<=(E AND FF1)&"0";Q3<=(E AND FF2)&"00";Q4<=(E AND FF3)&"000";Q<=Q1+Q2+Q3+Q4;END behave;数字与符号重组子模块:程序代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY sfcz ISPORT(Q:IN STD_LOGIC_VECTOR(7 DOWNTO 0);FHO:IN STD_LOGIC;CJO:OUT STD_LOGIC_VECTOR(8 DOWNTO 0));END sfcz;ARCHITECTURE behave OF sfcz ISBEGINCJO<=FHO & Q;END behave;3.5显示控制模块:模块说明:当CH,DH为0,0时显示被乘数,当按下“乘号键CH”即CH,DH为1,0时显示乘数,当按下“等号键DH”即CH,DH为1,1时显示乘积。
VHDL程序代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY xskz ISPORT(CH:IN STD_LOGIC;DH:IN STD_LOGIC;CLK:IN STD_LOGIC;AIN:IN STD_LOGIC_VECTOR(4 DOWNTO 0);BIN:IN STD_LOGIC_VECTOR(4 DOWNTO 0);CJIN:IN STD_LOGIC_VECTOR(8 DOWNTO 0);shuchu:OUT STD_LOGIC_VECTOR(8 DOWNTO 0));END xskz;ARCHITECTURE behave OF xskz ISBEGINPROCESS(CH,DH,CLK)BEGINIF(CLK'EVENT AND CLK='1')THENIF(CH='0' AND DH='0')THENshuchu<=AIN(4)&"0000"&AIN(3 DOWNTO 0);ELSIF(CH='1' AND DH='0')THENshuchu<=BIN(4)&"0000"&BIN(3 DOWNTO 0);ELSEshuchu<=CJIN;END IF;END IF;END PROCESS;END BEHAVE;3.6显示模块:模块说明:由AIN端接收要显示的二进制内容,输出转换成十进制后各位对应的数码管显示代码。