VHDL中的完整8位微控制器

此项目是VHDL中的完整8位微控制器。在此VHDL项目中,介绍了微控制器的VHDL代码。 8位微控制器是作为完整设计而设计,实现和操作的,用户可以使用汇编语言对微控制器进行编程。完成设计后,微控制器将在FPGA DE0纳米板上实现。如想了解得更多请下载附件。

应用介绍

此项目是VHDL中的完整8位微控制器。在此VHDL项目中,介绍了微控制器的VHDL代码。 8位微控制器是作为完整设计而设计,实现和操作的,用户可以使用汇编语言对微控制器进行编程。prof在书“带VHDL的逻辑电路和逻辑设计简介”的第13章中提供了8位微控制器的指令集和体系结构。 布鲁克·拉梅尔(Brock J.LaMeres)。 该微控制器具有8位处理器,128字节程序存储器,96字节RAM,16x8位输出端口和16x8位输入端口。 用户可以通过在程序存储器中插入操作码和操作数来对微控制器进行编程。完成设计后,微控制器将在FPGA DE0纳米板上实现。

本人在下方展示了微控制器ALU的VHDL代码;如想了解得更多请下载附件。

library IEEE;  
 use IEEE.STD_LOGIC_1164.ALL;  
 USE ieee.std_logic_arith.all;  
 USE ieee.std_logic_unsigned.all; 
 --fpga4student.com FPGA projects, Verilog projects, VHDL projects
 -- VHDL project: VHDL code for 8-bit Microcontroller 
 -- Submodule VHDL code: ALU
 entity ALU is  
 port (  
                A,B: in std_logic_vector(7 downto 0);  
                ALU_Sel:in std_logic_vector(2 downto 0);   
                NZVC: out std_logic_vector(3 downto 0);  
                Result: out std_logic_vector(7 downto 0)  
           );  
 end ALU;  
 architecture Behavioral of ALU is  
 signal ALU_Result:std_logic_vector(7 downto 0);  
 signal ALU_ADD: std_logic_vector(8 downto 0);  
 signal C,Z,V,N,add_ov,sub_ov: std_logic;  
 begin  
 process(ALU_Sel,A,B)  
 begin  
           ALU_ADD <= "000000000";  
      case(ALU_Sel) is  
           when "000" => -- ADD  
                ALU_ADD <= ('0' & A )+ ('0'& B);  
                ALU_Result <= A + B;  
           when "001" => -- SUB  
                ALU_Result <= B - A;       
                ALU_ADD      <= ('0' & B) - ('0' & A);       
           when "010" => -- AND  
                ALU_Result <= A and B;  
           when "011" => -- OR  
                ALU_Result <= A or B;            
           when "100" => -- Increment  
                ALU_Result <= A + x"01";                 
           when "101" => -- Decrement  
                ALU_Result <= A - x"01";       
           when others =>  
                ALU_Result <= A + B;  
      end case;  
 end process;  
      Result <= ALU_Result;  
      N <= ALU_Result(7);  
      Z <= '1' when ALU_Result = x"00" else  
            '0'; 
 --fpga4student.com FPGA projects, Verilog projects, VHDL projects   
 ---Overflow flag---------------------------------------  
   add_ov<= (A(7)and B(7)    and (not ALU_Result(7))) or ((not A(7))and (not B(7)) and ALU_Result(7));  
   sub_ov<= (A(7)and (not B(7)) and (not ALU_Result(7))) or ((not A(7))and B(7)    and ALU_Result(7));   
   with ALU_Sel select  
    V    <= add_ov when "000",  
          sub_ov when "001",  
          '0' when others;  
      -- Carry out flag  
   with ALU_Sel select  
    C <=  ALU_ADD(8) when "000",  
        ALU_ADD(8) when "001",  
          '0' when others;  
      NZVC <= N & Z & V & C;  
 end Behavioral;  

文件列表(部分)

名称 大小 修改日期
VHDL中的完整8位微控制器.txt4.67 KB2020-03-31

立即下载

相关下载

[VHDL中的完整8位微控制器] 此项目是VHDL中的完整8位微控制器。在此VHDL项目中,介绍了微控制器的VHDL代码。 8位微控制器是作为完整设计而设计,实现和操作的,用户可以使用汇编语言对微控制器进行编程。完成设计后,微控制器将在FPGA DE0纳米板上实现。如想了解得更多请下载附件。

评论列表 共有 0 条评论

暂无评论

微信捐赠

微信扫一扫体验

立即
上传
发表
评论
返回
顶部