Thiết kế risc microcontroller dùng vhdl - pdf 15

Download miễn phí Đề tài Thiết kế risc microcontroller dùng vhdl
Lời mở đầu
Hiện nay, công nghệ vi mạch phát triển rất nhanh và tạo ra rất nhiều hướng phát
triển mới cho tương lai. Điển hình cho sự phát triển nay là xuất hiện của các IC logic lập
trình được như PLA, FPGA, ASIC các IC nay có mức độ tích hợp ngày càng cao(có thể
chứa trên 1 triệu Transitor đối với loại VLSI), các ứng dụng của nó cũng trở nên phổ biến
hơn.Do mức độ tích hợp của các IC cao dẫn theo sự phức tạp trong cấu trúc của nó,chinh
vì vây yêu cầu đặt ra là cần có 1 công cụ vạn năng để hỗ trợ cho việc thiết kế số. Từ đó dẫn
đến sự ra đời của các ngôn ngữ mô tả phần cứng như VHDL,Verilog .Nó giúp cho các
nhà thiết kế dễ dàng hơn trong việc thiết kế hệ thống số dựa trên các IC lập trình được này.
Em chọn đề tài “Thiết kế Risc Microcontroller dùng VHDL” với mục đích là tìm
hiểu về các IC Logic lập trình được, cách thức lập trình mô tả phần cứng trên ngôn ngữ
VHDL, và cấu trúc, họat động của 1 MCU dạng RISC.
Em xin chân thành Thank các thầy cô trong trường Đại học Bách khoa TPHCM
nói chung và các thầy cô trong khoa Điện- Điện tử nói riêng đã truyền dạy những kinh
nghiệm quý báu và giúp đở em trong suốt quá trình học tập.
Đặc biệt, em xin gửi lời Thank chân thành đến thầy HỒ TRUNG MỸ người đã tận tình
giúp đở em hoàn thành đồ án này.
Thiết kế RISC microcontroller

Mục lục
trang
I > Giới Thiệu đề tài 4
II> KHÁI QUÁT VỀ RISC VÀ CISC 5
III> TẬP LỆNH 6
IV > PIPELINE PROCESSING 12
V> SƠ ĐỒ KHỐI CỦA THIẾT KẾ RISC 14
VI> THIẾT KẾ ĐƯỜNG DỮ LIỆU (DATAPATH) 16
VII> THIẾT KẾ ĐƠN VỊ ĐIỀU KHIỂN (CONTROL UNIT) 25
VIII> CHƯƠNG TRÌNH VHDL VÀ KẾT QUẢ MÔ PHỎNG 28

I> GIỚI THIỆU ĐỀ TÀI
1. Mục đích cùa đồ án:
Tìm hiểu cấu trúc, và hoạt động của 1 RISC Microcontroller cơ bản,
Thiết kế và dùng ngôn ngữ VHDL để mô tả RISC MCU.
2. Phạm vi thiết kế của đồ án:
Thiết kế chỉ thực hiện các chức năng cơ bản của 1 MCU như: thưc hiện các
phép tóan cộng trừ, logic, dịch, di chuyển dữ liệu, rẽ nhánh không điều kiện và có điều kiện, gọi
hàm, và các lệnh tác động lên bit.
Thiết kế dựa trên tập lệnh của Atmel AVR AT90S1200. Bằng cách này,
Thiết kế có thể sử dụng các công cụ assempler, simulater do Atmel cung cấp.
Do giới hạn của đề tài nên RISC MCU không hỗ trợ ngắt ngoài, Timer, Port
IO 2 chiều, analog comparator, điện trở kéo lên bên trong, watchdog reset . như AVR
AT90s1200.
Thiết kế sử dụng phần mềm MAX + plus II để thực hiện và mô phỏng thiết
kế. MAX + plus II là phần mềm do ALTERA phát triển. Nó có một số Modul quan trọng
cho thiết kế, ví dụ như Compiler, Simulater, Wavefrom editor, và Programmer .
Thiết kế RISC microcontroller
II> KHÁI QUÁT VỀ RISC VÀ CISC
1. Comples Instruction Set Computer (CISC)
Những năm trước đây, Tập lệnh của máy tính có số lượng lệnh ít và đơn giản.
Với sự phát triển của kỹ thuật và yêu cầu của các ứng dụng khác nhau, tập lệnh của máy tính ngày
càng tăng về số lượng lẫn độ phức tạp( sử dụng nhiều loại dữ liệu và nhiều mode định địa chỉ).
Một máy tính có tập lệnh lớn và phức tạp được gọi là CISC(Complex Intrucstion Set Computer).
Đặc tính cơ bản của cấu trúc CISC:
- Có số lượng lệnh rất nhiều, thông thường từ 100 tới 250 lệnh.
- Một số lệnh thực hiện các chức năng đặc biệt và thường không được sử dụng.
- Rất nhiều chế độ định địa chỉ, thường có khoảng từ 5->20 chế độ định địa chỉ.
- Cấu trúc lệnh không cố định và dài, thường từ 2 tới 6 bytes.
- Lệnh có tóan hạng chứa trong ô nhớ.
2. Reduce Instruction Set Computer (RISC)
Vào đầu năm 1980, trong các thống kế của hệ thống máy tính, người ta thấy
hầu hết 80% số lệnh trong tập lệnh ít được sử dụng. Vì vậy để tăng hiệu quả cho ứng dụng và việc
thiết kế, người ta đặt ra vấn đề về một máy tính có tập lệnh được rút gọn và đơn giản được gọi là
RISC (Reduce Intruction Set Computer).
Đặc tính cơ bản của cấu trúc RISC:
- Chu kỳ lệnh được chia thành 2 chu kỳ: tìm nạp lệnh và thực thi lệnh.
- Lệnh được thực thi trong 1 chu kỳ xung clock.
- Lệnh có chiều dài cố định(16 bit hay 32 bit), và có định dạng dễ giải mã.
- Tập lệnh có số lượng lệnh ít.
- Ít chế độ định địa chỉ.
- Hạn chế lệnh truy xuất bộ nhớ, chỉ truy xuất thông qua con trỏ dữ liệu.
- Tất cả các lệnh được thự hiện thông qua các thanh ghi của CPU.
- Thường sử dụng mạch logic để điều khiển thực thi lệnh hơn là sử dụng vi chương
trình (microprogram) như CISC.
- Số lượng thanh ghi đa năng khá nhiều (ít nhất là 32 Register).
Thiết kế RISC microcontroller
III> TẬP LỆNH:
1. Tóm tắt Tập lệnh
Thiết kế dựa trên tập lệnh của Atmel AVR AT90S1200. Bằng cách này,
Thiết kế có thể sử dụng các công cụ assempler, simulater do Atmel cung cấp.
Tập lệnh được chia thành 4 nhóm lệnhxem bảng 3.1)
- Nhóm lệnh số học và logic: gồm các lệnh tính tóan số học và logic
- Nhóm lệnh rẽ nhánh: gồm các lệnh nhảy không điều kiện, nhảy có điều
kiện theo các cờ trạng thái, lệnh gọi hàm và Return.
- Nhóm lệnh truyền dữ liệu: gồm các lệnh di chuyển dữ liệu giữa các thanh
ghi, ô nhớ RAM và Port IO bên ngoài.
- Nhóm lệnh về bit: gồm các lệnh bit như xóa, đặt bit, lệnh dịch xoay .
2. Chế độ định Địa chỉ (Addressing Modes):
Theo thiết kế thì RISC có 6 chế độ định địa chỉ. RA, RB được xem như là
tóan hạng đích và toán hạng nguồn.
2.1 Định địa chỉ trực tiếp thanh ghi đơn:
Lệnh có một toán hạng là RA: vừa là thanh ghi nguồn vừa là thanh ghi đích.
Ví dụ như lệnh: dịch, xoay, set bit .
2.2 Định địa chỉ trực tiếp thanh ghi đôi:
Lệnh có hai toán hạng là RA và RB. Sau khi tính tóan kết quả được ghi vào
RA.Ví dụ như lệnh tóan học và logic
2.3 Định địa chỉ I/O trực tiếp :
Toán hạng là I/O register. Địa chỉ được chứa trong 6 bit trong từ lệnh. Cách
định địa chỉ này được sử dụng trong lệnh IN và OUT.
2.4 Định địa chỉ dữ liệu gián tiếp:
Tóan hạng là ô nhớ Ram có địa chỉ chứa trong thanh ghi Z. Cách định địa chỉ
được sử dụng trong lệnh LD và St.
2.5 Định địa chỉ tương đối bộ nhớ chương trình:
Cách định địa chỉ này được sử dụng trong lệnh RJMP, RCALL. Địa chỉ lệnh
kế được tính bằng PC + Offset. Offset được chứa trong từ lệnh.
2.6 Định địa chỉ tức thời:
Tóan hạng là hằng số 8 bit đựơc cho trong từ lệnh


Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí

Tóm tắt nội dung tài liệu:

Tại pha đầu trạng thái S0 lệnh đã tìm
nạp được đưa vào giải mã lệnh các chức năng đơn vị đường dữ liệu được xác lập, địa chỉ PC mới
được tính toán, ngỏ vào của đơn vị điều khiển INS_TYPE= ”100” , tại pha thứ 2 trạng thái sẽ là
S7 địa chỉ quay về được cất vào Stack. Tại pha cuối trạng thái S8 PC được nạp địa chỉ lệnh mới.
Khi RISC thực hiện lệnh RET. Tại pha đầu trạng thái S0 lệnh đã tìm nạp được đưa
vào giải mã lệnh các chức năng đơn vị đường dữ liệu được xác lập, địa chỉ PC mới được tính toán,
ngỏ vào của đơn vị điều khiển INS_TYPE= ”101”, tại pha thứ 2 trạng thái sẽ là S8 địa chỉ quay về
được nạp vào PC để tìm nạp lệnh mới. Tại pha cuối trạng thái S7 địa chỉ quay về được POP ra
khỏi vùng Stack.
Khi RISC thực hiện nhóm lệnh LD, ST. tại pha đầu trạng thái S0 lệnh đã tìm nạp
được đưa vào giải mã lệnh các chức năng đơn vị đường dữ liệu được xác lập, dữ liệu từ nguồn
đưa đến đích, ngỏ vào của đơn vị điều khiển Ins_TYPE= ”010”, tại pha thứ 2 trạng thái sẽ là S6
thực hiện ghi dữ liệu và PC tìm nạp lệnh mới. Tại pha cuối trạng thái S3 là trạng thái rãnh.
ĐAMH Điện Tử Viễn Thông II ___________________________________ GVHD: Hồ Trung Mỹ
_____________________________________*******______________________________________
Thiết kế RISC microcontroller _________________________________ SVTH: Phạm Hưng Thịnh
_____________________________________*******______________________________________
28
VIII> CHƯƠNG TRÌNH VHDL VÀ KẾT QUẢ MÔ PHỎNG.
1. Chương trình VHDL mô tả thanh ghi
-----------------------////////////////////////////////////////////////////////////////////-------------------------
-----------------------//-- DO AN DIEN TU - VIEN THONG II --//---------------------------
----------------------//-- THAY HUONG DAN: HO TRUNG MY --//------------------------
-----------------------//-- SINH VIEN: PHAM HUNG THINH--//-----------------------------
----------//--DE TAI: THIET KE RISC 8 BIT MICROCONTROLLER --//----------------
---------////////////////////////////////////////////////////////////////////////////////////////////////----------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY REG IS
PORT(
DI:IN STD_LOGIC_VECTOR(7 DOWNTO 0);
CLR,CLK: IN STD_LOGIC;
DO:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)
);
END REG;
ARCHITECTURE BEV OF REG IS
SIGNAL DATA: STD_LOGIC_VECTOR(7 DOWNTO 0);
BEGIN
PROCESS(CLK,CLR)
BEGIN
IF CLR='0' THEN
DATA<="00000000";
ELSE
IF(CLK'EVENT AND CLK='0')THEN
DATA<=DI;
END IF;
END IF;
END PROCESS;
DO<=DATA AFTER 0 ns;
-- KET QUA THOI GIAN TRE 6.4 ns ~ 7 ns
END BEV;
---------------/////////////////////////////////////////////////////-------------------
ĐAMH Điện Tử Viễn Thông II ___________________________________ GVHD: Hồ Trung Mỹ
_____________________________________*******______________________________________
Thiết kế RISC microcontroller _________________________________ SVTH: Phạm Hưng Thịnh
_____________________________________*******______________________________________
29
Kết quả mô phỏng:
2. Chương trình VHDL mô tả bộ mux 8Æ1
-----------------------////////////////////////////////////////////////////////////////////-------------------------
-----------------------//-- DO AN DIEN TU - VIEN THONG II --//---------------------------
----------------------//-- THAY HUONG DAN: HO TRUNG MY --//------------------------
-----------------------//-- SINH VIEN: PHAM HUNG THINH--//-----------------------------
----------//--DE TAI: THIET KE RISC 8 BIT MICROCONTROLLER --//----------------
---------////////////////////////////////////////////////////////////////////////////////////////////////----------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY MUX8T1V8 IS
PORT(
IN0,IN1,IN2,IN3,IN4,IN5,IN6,IN7: IN STD_LOGIC_VECTOR (7 DOWNTO 0);
SEL :IN STD_LOGIC_VECTOR(2 DOWNTO 0);
OUTPUT: OUT STD_LOGIc_VECTOR(7 DOWNTO 0)
);
END MUX8T1V8;
ARCHITECTURE MULTIPLEX OF MUX8T1V8 IS
BEGIN
WITH SEL SELECT
OUTPUT<= IN0 WHEN "000",
IN1 WHEN "001",
IN2 WHEN "010",
IN3 WHEN "011",
IN4 WHEN "100",
IN5 WHEN "101",
IN6 WHEN "110",
ĐAMH Điện Tử Viễn Thông II ___________________________________ GVHD: Hồ Trung Mỹ
_____________________________________*******______________________________________
Thiết kế RISC microcontroller _________________________________ SVTH: Phạm Hưng Thịnh
_____________________________________*******______________________________________
30
IN7 WHEN OTHERS;
END MULTIPLEX;
---------------/////////////////////////////////////////////////////-------------------
Kết quả mô phỏng:
3. Chương trình VHDL mô tả ROM
-----------------------////////////////////////////////////////////////////////////////////-------------------------
-----------------------//-- DO AN DIEN TU - VIEN THONG II --//---------------------------
----------------------//-- THAY HUONG DAN: HO TRUNG MY --//------------------------
-----------------------//-- SINH VIEN: PHAM HUNG THINH--//-----------------------------
----------//--DE TAI: THIET KE RISC 8 BIT MICROCONTROLLER --//----------------
---------////////////////////////////////////////////////////////////////////////////////////////////////----------------
library ieee;
use ieee.std_logic_1164.all;
entity effrom is
port( pc : in std_logic_vector(8 downto 0);
instruction : out std_logic_vector(15 downto 0));
end effrom;
architecture rom of effrom is
ĐAMH Điện Tử Viễn Thông II ___________________________________ GVHD: Hồ Trung Mỹ
_____________________________________*******______________________________________
Thiết kế RISC microcontroller _________________________________ SVTH: Phạm Hưng Thịnh
_____________________________________*******______________________________________
31
component LPM_ROM
generic (
LPM_WIDTH: integer := 16;
LPM_WIDTHAD: integer := 9;
LPM_NUMWORDS: integer := 512;
LPM_FILE: string := "program.mif";
LPM_ADDRESS_CONTROL: string := "UNREGISTERED";
LPM_OUTDATA: string := "UNREGISTERED"
);
port (
ADDRESS: in STD_LOGIC_VECTOR(LPM_WIDTHAD-1 downto 0);
inclock: IN STD_LOGIC := '0';
outclock: IN STD_LOGIC := '0';
memenab: IN STD_LOGIC := '1';
Q: out STD_LOGIC_VECTOR(LPM_WIDTH-1 downto 0)
);
end component;
signal gnd, vcc : std_logic;
begin
vcc <= '1';
gnd <= '0';
v1 : LPM_ROM
port map (address => pc, memenab => vcc, q => instruction);
end rom;
---------------/////////////////////////////////////////////////////-------------------
Kết quả mô phỏng:
ĐAMH Điện Tử Viễn Thông II ___________________________________ GVHD: Hồ Trung Mỹ
_____________________________________*******______________________________________
Thiết kế RISC microcontroller _________________________________ SVTH: Phạm Hưng Thịnh
_____________________________________*******______________________________________
32
4. Chương trình VHDL mô tả RAM
-----------------------////////////////////////////////////////////////////////////////////-------------------------
-----------------------//-- DO AN DIEN TU - VIEN THONG II --//---------------------------
----------------------//-- THAY HUONG DAN: HO TRUNG MY --//------------------------
-----------------------//-- SINH VIEN: PHAM HUNG THINH--//-----------------------------
----------//--DE TAI: THIET KE RISC 8 BIT MICROCONTROLLER --//----------------
---------////////////////////////////////////////////////////////////////////////////////////////////////----------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity ram is
port( addr : in std_logic_vector(7 downto 0);
DATAWR: in std_logic_vector(7 downto 0);
wr_ram,clkW: in std_logic;
--clrn : in std_logic;
c : out std_logic_vector(7 downto 0)
);
end entity;
architecture Sram of ram is
component lpm_ram_dq
generic( lpm_width: positive := 8;
lpm_widthad: positive := 8;
lpm_numwords: natural := 256;
lpm_file: string := "ram.mif";
lpm_indata: string := "registered";
lpm_address_control: string := "registered";
lpm_outdata: string := "unregistered"
);
port( data: in std_logic_vector(lpm_width-1 downto 0);
address: in std_lo...
Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status