zisepaopao

    1. library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity cal is   port(clk:in std_logic;  --输入时钟信号        num:in std_logic_vector(9 downto 0);--数字按键        plus:in std_logic;--加法按键        subt:in std_logic;--减法按键        mult:in std_logic;--乘法按键        mdiv:in std_logic;--除法按键        equal:in std_logic;--等号键        c:in std_logic;    --清零键,异步置位键        onum1,onum2,onum3:out std_logic_vector(0 to 6)); --3个七段译码显示管 end cal; architecture a of cal is signal flag:std_logic;  --表示是否有是第一个数的输入标识flag signal fl:std_logic;    --表示是否开始第二个数的标识fl signal acc:std_logic_vector(7 downto 0):=x"00"; --用于存放第一个数的累加器 signal reg:std_logic_vector(7 downto 0):=x"00"; --用于存放第二个以及以后的数字的寄存器 signal keep:std_logic_vector(7 downto 0);--用于放显示数字的暂存器 signal ans:std_logic_vector(7 downto 0); --用于放各步计算结果的寄存器,不包括除法结果 signal dans:std_logic_vector(3 downto 0); --用于存放除法结果的寄存器 signal dan:std_logic_vector(3 downto 0); signal numbuff:std_logic_vector(3 downto 0);--数字缓存 signal vf:std_logic;--表示是否是最后结果的标识 signal strdiv:std_logic;--除法计算开始的信号 signal numclk:std_logic;--将数字想哦那个缓存numbuff放入累加器acc或寄存器reg的信号 signal clear:std_logic; --清零reg中数字的信号 signal inplus:std_logic; signal insubt:std_logic; signal inmult:std_logic; signal inmdiv:std_logic; signal inequal:std_logic;--同步加减乘除等于信号 signal cou:std_logic_vector(1 downto 0);--用来记忆是第几次计算的信号 component numdecoder is  --引用数字按键的译码电路    port(reset:in std_logic;         inclk:in std_logic;         innum:in std_logic_vector(9 downto 0);         outnum:buffer std_logic_vector(3 downto 0);         outflag:out std_logic); end component; component display is--引用数字的显示电路    port(c,clk:in std_logic;         keep:in std_logic_vector(7 downto 0);         onum1,onum2,onum3:out std_logic_vector(0 to 6)); end component; component div is --引用除法器   port(a:in std_logic_vector(7 downto 0);        b:in std_logic_vector(3 downto 0);        clk:in std_logic;        str:in std_logic;        s:out std_logic_vector(3 downto 0);        y:out std_logic_vector(3 downto 0)); end component; begin innum1:numdecoder port map (c,clk,num,numbuff,numclk);--按键后产生相对应的数字 pacecal:process(c,clk)--产生同步运算符号 begin if c='1' then inplus
    2. 天哪!有这么多弯弯啊!用VHDL语言描述,就是平常用的通用计算器一样,实现连续的加减运算,你说的后者的情况!比如12+34+5,先运算12+34=46,再运算46+5=51,中间的46要显示出来!你什么时候在啊?
    3. 你好!就是实现1+2+4-1这样的式子,我的程序有些问题不能解决!如果你能帮忙的话,请加我QQ:475943663.非常感谢!

最近访客

< 1/1 >

统计信息

已有268人来访过

  • 芯积分:--
  • 好友:1
  • 主题:1
  • 回复:3

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言