de1 tren sopc
TRANSCRIPT
-
8/13/2019 De1 Tren Sopc
1/30
NIOS II programming using SoPC Builder on
DE2 FPGA Kit
Bi vit nhm mc ch gii thiu v hng dn cch thc hin mt h thng SoPC FPGA
da trn Vi x l 32-bit Nios II ca altera v hng dn cch pht trin cc ng dng trn hthng Nios II. Ni dung gm 3 phn :
Phn1: Xy dngmththngnhng ngintrn FPGA sdngSoPC Builder.
Phn2: Lptrnh iukhinI/O cho Nios II
Phn3: Tomtcomponent tch hpvo hthngNios II
Phn1: Xy dngmththngnhng ngintrn FPGA sdngSoPC Builder.
Phn ny gip chng ta to mt h thng (system) vi li NIOS II. V cc bc lm vic vi NIOS II IDE.
GiithiuhthngSoPC v chngtrnh SoPC builder:
Trchtchng ta tora mtproject trong phnmmQUARTUS II theo cc bcsau:
Hnh 1 : Giao dinQuartus
- M chng trnh QUATUS II File>New Project Wizard t tn ng dn, tn project. Sau nhn Next.
- Thm cc file cn thit vo project (nu c), sau nhn Next.
- Chn la thit b FPGA cn thit. trong trng hp l kit DE1 th m hiu l EP2C20F484C7 (nu dng KIT DE2 th m hiu
ca FPGA l EP2C35F672C6), sau bm next.
- Bc tip theo l chn cc cch thc m phng. Trong bi ny ta khng cn dng cc cng c m phng nn khng chn
phn ny, nn ta chn lun finish hon thnh vic to project.
Tiptheo ta tohthngNIOS II bngSOPC Builder :
-
8/13/2019 De1 Tren Sopc
2/30
H thng SoPC (System on Programable Chip) bao gm cc thnh phn chnh:
- CPU Nios II
- Memory (onchip memory hoc Ram ngoi)
- JTAG
- Port I/O
- Cc component
Ta m tool SoPC builder trong phn mm QUATUS II
Sau t tn h thng chn ngn ng m t phn cng l Verilog hay VHDL, nhn OK.
Hnh 2 : SoPC Builder
-
8/13/2019 De1 Tren Sopc
3/30
Hnh 3 : ChnhSoPC datrn ngn ngverilog
* ToVXL Nios II cho hthng:
Chn kiu NIOS II: ty vo tnh nng ca h thng m chn li NIOS II cho ph hp .Trong vi d ny v khng cn nhiu
chc nng nn ta chon phin bn n gin nht l phin bn NIOS II/e bng cch check vo mc NIOS II/e nh hnh bndi.
-
8/13/2019 De1 Tren Sopc
4/30
Hnh 4 : ChnLoiNIOS II
i vi kiu NIOS ny n gin nn ta tip tc next n phn chn thnh phn JTAG. Trong bi ny ta s dng phin bn
NIOS II/e nn ch cho php chn JTAG level 1. Ri nhn next hon thnh khai bo
-
8/13/2019 De1 Tren Sopc
5/30
Hnh 5 : ChnDebug level
Chn la mt s chc nng khc ca NIOS II v d nh phn cng dng thc hin cc php tnh c du chm ng, ccqui nh v ngt, ri chn finish hon thnh.
-
8/13/2019 De1 Tren Sopc
6/30
Hnh 6 : Toxong Nios II
* Ch l exception vector v reset vector cha c mapping v ta cha kt ni Nios vi bt k b nh no, ta s quay tr
li set hai vector ny ngay khi to b nh data v program cho Nios II.
* Tohthngbnhcho Nios II:
Nios II ch l mt li vi x l ch cha phi l vi iu khin do n cn phi c ti thiu nh d liu v b nh chng
trnh c th hot ng c.
n gin nht l dng On-Chip Memory bng cch double_click On-Chip Memory(RAM or ROM). Nhng lu nn
chn dung lng b nh ph hp tng ng dng. V d y chn 32Kbytes, chiu rng mi nh l 32 bit nu l kit DE2,
nu l DE1 ta chn b nh l 16KB. Sau chn Finish hon thnh.
Sau khi to b nh xong, ta to kt ni gia Nios II v b nh nu n cha c kt ni. Ch l phi kt ni c hai bus
instruction_master v data_master
-
8/13/2019 De1 Tren Sopc
7/30
Hnh 7 : Tobnhhthng
* ToUART thng qua chunJTAG cho Nios II:
Trong Communication double click chn JTAG UART. Nu khng bit chnh g ht th c nhn Finish hon thnh.
-
8/13/2019 De1 Tren Sopc
8/30
Hnh 8 : JTAG UART
Sau bcny ta c hthngnginc thhotngcnhhnh sau :
-
8/13/2019 De1 Tren Sopc
9/30
Hnh 9 : HthngSoPC tithiu
bc ny nu h thng vn cn b bo li vng nh do tranh chp a ch trong h thng, th khc phc li ny ta
vo: System> Auto-Assign Base Addresses.
Hnh 10 : Litranh chpbnh
Bc tip theo ta kch doblle vo component Nios. Trong mc Reset Vector v Expection Vectorchn onchip_mem
sa li nh ni trn .
-
8/13/2019 De1 Tren Sopc
10/30
Hnh 11 : Salireset vector v exception vector
- Trong th System Generation:
Nu cn m phng ta cn check vo box Simulation. Create simulator files. Trong bi ny ta khng cn m phng nnkhng check vo box ny.
Sau nhn nt Generate to h thng.- Ch h thng chy xong v nhn exit
-
8/13/2019 De1 Tren Sopc
11/30
Hnh 12 : Tohthngthnh cng
ToTop Module trong Quartus
To Top Module cho Project, sau gi module h thng va mi to vo.Gn chn cho Top Module.
- Lu :
Chn Assignments / Device, Nhn nt Device & Pin Options , Trong th Unused Pins chn As input tri-stated trong Reserve all unusued pins, Nhn OK.
Di y l on mu ca bi ny
module bai1 (CLOCK_50,KEY);
input CLOCK_50;input KEY;
system IC1(// 1) global signals:.clk_0(CLOCK_50),
-
8/13/2019 De1 Tren Sopc
12/30
.reset_n(KEY),
);endmodule
Note: Trong on chng trnh trn ta thyc module system y l module do chng trnh tng hp to ra. Module
ny s c tn trng vi tn ta t ban u
Hnh : tch hphthngSoPC vo hthng
cho h thng. Ta s tm thy Module ny trong th mc lu chng trnh ang thc hin system.v, thc hin file top v
bin dch ng m khng b li ta nn m file system.v v tm n phn khai bo ca module system, copy nguyn phn
khai bo ny dn vo top module ca chng ta ( nh hnh di ) v gn cc tn hiu khai bo top module nh trn.
Tnghphthng
Chn Processing / Start Compilation tng hp h thng.
Khi h thng c tng hp. Cc File *.sof v file * .pof s c to ra.
Lptrnh iukhinNios sdngngn ngC
Cc bc thc hin:
- M chng trnh Nios IIv Chn ni lu tr phn mm: File/ switch workspace, sau chn ng dn v OK.
-
8/13/2019 De1 Tren Sopc
13/30
Hnh 13 : Giao dinpht trinNios II IDE
- M chng trnh Nios II
Chn File>New>NiosII C/C++ Application
- t tn cho chng trnh trong khung Name (nu ta munto 1 th vin mi, y chng ta xi th vin c sn c
h tr l hello_ world_small_0)
- Ti khung SOPC builder System chn ng dn ti file c ui *.ptf m Quartus sinh ra trong qu trnh tng hp.
-
8/13/2019 De1 Tren Sopc
14/30
Hnh 14 : Toexample hello_world_small
- n y ta c th vit code C vo file hello_ worl_small.c c sn hay to mt file mi v s dng cc lnh c trong C v
cc lnh h tr ring cho Nios lp trnh iu khin cho h thng.
- Trong bi ny ta s thc hin chc nng n gin nht trong C l xut mt on text ra mn hnh.(ta dung lun chng
trnh trong hello_ worl_small.c),
- Trc ht ta chy chng bin dch trong quartus v np xung kit :
Nu phn mm bn khng c licence th s c bng cnh bo v gii hn thi gian mphng do khng c licence, bn
khng quan tm v bm OK b qua. Tip theo l np xung kit:
-
8/13/2019 De1 Tren Sopc
15/30
- Sau khi Np xong chng trnh Quartus, gi y ta c mt h thng y vi trung tm l vi x l 32bit Nios II. By
gi ta qua giao din Nios II IDE np chng trnh cho NIOS:
Hnh 15 : Npchngtrnh cho Nios II
Sau khi np xong, nu chy ng, mn hnh s xut ra dng ch hello from Nios II ! nh hnh sau
-
8/13/2019 De1 Tren Sopc
16/30
Hnh 16 : Example Hello world small
Lc ny th phn mm NIOS II tht s hot ng v iu khin phn cng m ta np xung kit DE1 lc ny, hai thnh
phn phn cng v mm ny c kt ni vi nhau, chng ta c th dng phn ny tc ng n phn kia, v d ta thay
i chng trnh trn NIOS II th kt qu hin th trn kit s khc (phn ny cha c hin th ) hay khi ta bm nt iu khin
trn kit (vd l nt reset chng hn ) th kt qu hin th trn NIOSII cng s thay i.
Phn2: Lptrnh iukhinI/O cho Nios II
- Ta thc hin cc bc nh to project trong QUARTUS II, v s dng toll SoPC builder. y ta cng to h thng vi ccthnh phn cn bn nh phn 1 ch c thm vo component pi/o, nh hnh di:
-
8/13/2019 De1 Tren Sopc
17/30
Hnh 17 : ToI/O Port cho Nios II
- Sau hon ton tng t nh bi mt ta s tin hnh to file top trong Quartus II, gn chn kt ni h thng v kt nixung kit.
- Tip theo l lm vic vi phn mm NIOS IDE, cng tng t nh phn 1.
Di y chng ta s lm 1 v d v phn ny thng qua vic iu khin led 7 on.
Trong v d ny ta s lm theo yu cu sau:
Xy dnghthnggm:
- Nios, memory,JTAG
- PIO: SW[15:0], HEX0, HEX7
S dng lnh IORD c d liu t SW Gii m d liu ra m led 7 on Thc hin php cng hai s 8 bit Gii m kt qu ra m led 7 on Dng lnh IOWR ghi ra led 7 on
Di y l cu trc h thng SoPC ta thit k v chng trnh Module top ta vit dng xung board DE1:
-
8/13/2019 De1 Tren Sopc
18/30
Hnh 18 : SoPC system
Hnh 19 : Example iukhinLed 7 on- SoPC
-
8/13/2019 De1 Tren Sopc
19/30
Tip theo s l cng on thc hin gn chn cho chip FPGA, cc chn m ta s dng s phi c kt ni ti cc led by
on ta c th iu khin chng, ta c th tham kho datasheet ca kit DE bit cc chn ca Led 7 on c kt ni
vi chn no, qua gn chn cho ng.
Hnh 20 : Gn chn cho v diukhinled 7 on
Sau ta xung board tng t nh hng dn phn 1, v tin hnh vit code trn Nios IDE iu khin. Cc bc
xy dng ta lm tng t nh hng dn phn 1, vi a code v d mu sau:
(ch l trc khi vit chng trnh chnh iu khin h thng th ta nn vit mt chng trnh tht n gin m bo
h thng chy ng nhm to ra cc file h thng cn thit, phc v chy chng trnh chnh nh v d y l file
"system.h")
Code iu khin h thng
#include "system.h"
#include "io.h"
int giai_ma(int a);
void main(){int x,y,z,t,chuc,dv;
while(1){
x = IORD(INA_BASE,0);y = IORD(INB_BASE,0);z = x
-
8/13/2019 De1 Tren Sopc
20/30
switch (a)
{case 0 : led = 0x40;break; //0
case 1 : led = 0x79;break; //1
case 2 : led = 0x24;break; //2case 3 : led = 0x30;break; //3case 4 : led = 0x19;
break; //4case 5 : led = 0x12;break; //5
case 6 : led = 0x02;break; //6
case 7 : led = 0x78;break; //7
case 8 : led = 0x00;break; //8case 9 : led = 0x10;
break; //9default : led = 0xff;
break; // khong sang}return led;
Trong HEX0_BASE, HEX1_BASE, LEDG_BASE, INA_BASE, INB_BASE L a ch ca cc thnh phn HEX0, HEX1, LEDR, INA,
INB (c khai bo trong file system.h )
hiu r nhng cu lnh dung c vghi thanh ghi dung y ( cng nh l ni chung trong lp trinh Nios IDE) ta s
tham kho cc nh ngha v cc lnh c ghi ngoi vi di y:
Hnh 21 : cc hm cghi I/O cbncaNios II
-
8/13/2019 De1 Tren Sopc
21/30
Sau khi khi thc hin xong cc bc lp trnh. Ta tin hnh tng hp v np xung kit kim tra kt qu.
-Thay i cc gii tr ca SW
-Kim tra s hin th trn LED-7-on
Phn3: Tomtcomponent tch hpvo hthngNios IICc bckhitocomponent
Trong SoPC builder chn New component Chn cc fileverilog vit. Ch ra file no cha top module nh chc nng cho cc port I/O Thm vo cc file software (nu c) Nhn finish to ra mt component mi
Tm hiuvcch tnh achthng qua component iukhinLED
Yu cu :
- Xy dng mt component gip CPU giao tip vi led:
LEDR[7:0] c ni vi ng a ch ni ca component. LEDG [7:0] c ni vi ng data.
- Phn ny gip ta tm hiu:
Cch iu khin giao tip gia Nios v component 8bit. Cch tnh a ch ni cho component ca Nios vidata l 8bit.
Ta vit mt file verilog lm top module cho component. Module ny ch c nhim v kim tra tn hiu CS c tch cc hay
khng.
Nu tch cc th ni cc ng data v addr vi LEDR Nu khng tch cc cc tn hiu data v addr s trng thi khng sng.
module led_control(cs,rst_n,we,clk,addr,data,addr_out,data_out);input cs,rst_n,clk;input we;input [3:0]addr;
input [7:0]data;output reg [7:0]data_out;
output reg [3:0]addr_out;always @(posedge clk or negedge rst_n)begin
if (rst_n == 1'b0)begin
data_out
-
8/13/2019 De1 Tren Sopc
22/30
end
endmodule
Cc bc thc hin nh sau :
Vit code verilog/VHDL cho component m ta mun tch hp vo h thng SoPC
Vo SoPC builder> chn New component> Trong chng trnh Nios dng lnh IOWR,IORD vi cc offset tng dn tng n v. Kim tra s hin th trn LEDR v rt ra kt lun
u tin tato component nh sau :
Hnh 22: Touser component
- Click next vo th HDL File
- Trong th HDL File, chn file m t thnh phn cn to. Bng cch click vo Add_button v chn ng dn ti file cn
thm vo. Nh phi chn Top Level Module lfile no. V d chn b iu khin LED (led_control) l thnh phn trong h
thng.
Sau khi chn cc file th chng trnh s t ng kim tra li. Nu c li, th chng trnh s bo li ti dng th my ca file
ang kim tra (lu cch kim tra li ny khng ging vi cch kim tra li trong Quartus m kim tra c v li c php ln
li v cch khai bo tn hiu giao tip cn thit ln cc thng s k thut yu cu i vi ngoi vi.
- Sau khi kim tra xong, click Next chn th Signals chn cc ng tn hiu ph hp vi kt cu Avalon. Trong bc
ny cn ch r cc tn hiu Clock, Reset, Write-enable, Read-enable, Write-data, Read-data, v cc tn hiu export.
Cc khai bo trn nm trong cc nhm interface khc nhau. Bao gm:
Avalon Interface: giao tip gia component v NIOS. uc chia lm 2 nhm nh. Mt nhm t hnh thnh trong qutrnh gn cc component ca nh sn xut vo h thng. Mt nhm c kt ni bi ngi thit k h thng.
-
8/13/2019 De1 Tren Sopc
23/30
Clock Interface: bao gm tn hiu clock, reset. Conduit_Ports Interface: c dng cho cc tn hiu giao tip ra ngoi h thng NIOS.
hiu thm v ngha ca cc nhm interface, ta c th tham kho hnh sau y:
Hnh 23 : Tomtcomponent tngthch Avalon Bus
Trong bi ny ta s khai bo cc tn hiu nh sau:
-
8/13/2019 De1 Tren Sopc
24/30
Hnh 24 : Cc tn hiucacomponent cnphicgn cho ngchcnng
- Trong Tab Signal cn ch r cc tn hiu: Clk, CS, Reset ...
-
8/13/2019 De1 Tren Sopc
25/30
Hnh 25 : Cuhnh cc tn hiu
- Ti lc ny ta thy chng trnh vn b bo li. Li ny l do cc interface cha c cc xung clk lin quan. khc phc li
ny ta s khai bo xung clock cho interface bc sau.
-
8/13/2019 De1 Tren Sopc
26/30
Hnh 26 : Bo litn hiuclock
- Tab Interfaces dng iu khin Timing cho component
-
8/13/2019 De1 Tren Sopc
27/30
Hnh 27 : Cuhnh timing v clock cho component
Cc thng s cn xc nh lin quan ti Setup-Time v Hold-Time. Cc thng s trn ph thuc ch yu vo yu cu timing
ca component. Trong v d ny ta c th gi nguyn gi tr mc nh. Nhng cn ch r tn hiu Clock ca h thng.
Sau khi thit lp timing ta c th coi lai dng sng kim tra nh th c ng cha
- Tip tc thit lp cc thng s cho interface
- Trong Tab Component Wizard ta thit lp tn v nhm cng nh phin bn ca component.
- Nhn Finish kt thc to mt thnh phn.
- Quay tr li SOPC Bilder. Gn CPU, memory, JTAG vo h thng. Ly ngoi vi mi to thm vo h thng bng cch
double_click vo component va to.
-
8/13/2019 De1 Tren Sopc
28/30
Hnh 28 : Hthngctch hpthm ngoivi led_control
- Thit lp cc thng s nh gn a ch, khai bo a ch reset vector, nh hng dn bi 1. Sau thc hin
Generate h thng.
- Vit Top Module, tng hp v gn chn cho h thng
- Thc hin to, khai bo cc thng s ca project
- Dng Nios IDE vit chng trnh iu khin
- iu khin component ta dng lnh:IOWR_8DIRECT(BASE,OFFSET,DATA); //(V ngdata c rng8 bit)
Top_module:
module lab1
(
CLOCK_50,KEY,
LEDR,LEDG);
input CLOCK_50;input KEY;output [7:0]LEDR;
output [3:0]LEDG;
system IC1(// 1) global signals:
.clk_0(CLOCK_50),
-
8/13/2019 De1 Tren Sopc
29/30
.reset_n(KEY),
// the_control .addr_out_from_the_control(LEDG),
.data_out_from_the_control(LEDR)
);
endmodule
Chng trnh iu khin:
#include "system.h"#include "io.h"
void delay (void);
int main(){
int x;while(1)
{for(x = 0; x
-
8/13/2019 De1 Tren Sopc
30/30
Hnh 29 : Ktquchytrn Nios II
Nh vy l ta tm hiu qua cch thc pht trin mt ng dng trn Nios II s dng h thng to t ng bi cng c
SoPC Builder ca Quartus. Hy vng bi vit mang li nhiu thng tin cho cc bn, nu cn trao i g vui lng gi comment
cho chng ti. Rt hy vng nhn c cc kin nh gi v gp ca cc bn.