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;
©版权声明:本文内容由互联网用户自发贡献,版权归原创作者所有,本站不拥有所有权,也不承担相关法律责任。如果您发现本站中有涉嫌抄袭的内容,欢迎发送邮件至: www_apollocode_net@163.com 进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
转载请注明出处: apollocode » VHDL中的完整8位微控制器
文件列表(部分)
名称 | 大小 | 修改日期 |
---|---|---|
VHDL中的完整8位微控制器.txt | 4.67 KB | 2020-03-31 |
发表评论 取消回复