-
1.
怎样在
TCL
脚本
分配管脚
source
.tcl
有点问题:
#
source
couldn't
read
file
no
such
file
or
directory
答:
From
the
Tools
menu
select
Tcl
s
cripts,
and
then
from
t
he
project
folder
choose
the
setup
s
cript
for
your
particular
develo
pment
board,
and
click
Run.
2
.
D:TEST
ios_sst60
下载时出现错误:
Error:
Can't
configure
device.
Expected
JTAG
ID
code
0x020010DD
fo
r
device
1,
but
found
JTAG
ID
code
0x020B40DD.
答:
SO
PC
所选器件和
开发
板上的不一致。<
/p>
3
.
在
NOIS
II
中
Bulid
例程
hello_world
都出现了错误,
错误提示为:
p>
gdrive/c/altera/kits/
< br>NIOS
2/components/altera_nios2/HAL/sr
c/:68:
error:
parse
error
before
'/'
token
等错误全部由引起,都是关于括号不匹配
的问题,而是
IDE
中的一个默认程序。这个错误
同样出现在
D:TESTDE2
Projectsoftwar
e
ios2
,培训用的一个简单实验。
答:找到文件,里面有个关于系统时钟频率的设置项,应该是
没有
赋值,你手动赋值。比如你用
50MHZ
< br>的时钟,就设成。如果总是出现
上述问题,可能和
软件<
/p>
有关系,建议重新安装软件。注意
quartus
和
NI
OS
安装版本一定要相
同
,
不能混装。
4
.这个
错误是什么原因引起,把那个
sdk_arm
删除后,又提示另
一个地方出错。
答:
运行
NIOS
II
IDE
,
点
Project->Clear
,
重新
Builde,
应该可以解决
问题
。
5<
/p>
.在
SOPC
中
Generate
出现如下错误是怎么回事
Error:
Generato
r
program
for
module
'epcs_controller'
did
NOT
run
successfully.
只
要在
SOPC
中加入
epcs_contr
oller
就会出现此错误,
无法生成一个元件。
答:可能和软件有关
系,建议重新安装软件(这个问题是我刚学
N
IOS
遇到的最头痛的一个问题,问题的原因是
Quartus
< br>和
Nios
安装的版
本不一致)
。
6
.在
Nios
II
IDE
中,怎样打开一个已经存
在的
工程
每次新建工程
比较麻烦。
p>
答:
指定一个
Nios
II
IDE
的工作目录,
就打开了那个目录下存在的
工程。另外,在
Nio
s
II
中是可以建立多个工程的。
7
.在
Quartus
II
中编译出现如下错误怎么办?
Error:
Can't
place
pins
assigned
to
pin
location
Pin_AE24
(IOC_X65_Y
2_N2)
答:按
F
1
可以查看帮助,出现这样的错误的原因是:
CAUSE:
You
assigned
two
or
more
pins
to
the
specified
location,
bu
t
the
Fitter
cannot
place
all
the
pins
in
that
location.
删除这个管脚
即可。有一种
比较简便的方法,就是在工程目录中找到一个后缀为
QSF
的管
脚配置
文件
,查找
Pin_AE24<
/p>
删除那行语句就行了。
8.
如何在
NIOS
II
IDE
下跟踪查看变量的定义或者函数的定义
答:按住
CTRL
键,鼠标移动到变量或者函数名的地方,就可以发
现这
些地方高亮显示,单击就可以进入到变量或者函数定义的地方。
9.
在有这样一段程序,它是如何操作的
unsigned
int
data
=
seg
ments[hex
&
15]
|
(segments[(hex
>>
4)
&
15]
<<
8)
答:
segments[hex
&
15]
显示个位
< br>0
~
F
;
(segments[(hex
>>
4)
&
15]
<<
< br>8)
显示十位数
0
~
F
,个位
0
~
F
,然后十位加一。
1
0
.这个错误是由什么引起提示
LED_
PIO_BASE
没有声明
答:这是因为名字不一致引起的比
如,在生成
SOPC
系统时,双击
PI
O(Parallel
I/O)(
在
Avalon
Modules
->
Other
下)
,
为系统添加输出接
口
,
你没有把该组件改名成
LED_PIO,
而是保留了原始的名字:
PIO_0
;但
你又通过
IOW
R_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE,
led);
来向
该组件写入数据,
就会
导致上述错误。
解决办法:
1.
可以修
改
sopc
系统,
为该
PIO
改名为
LED_PIO
;2.
在的前面给
LED_PIO_BASE
赋值,如
#define
LED_PIO_BASE
0x00001800
,
后面的这个地址要与
SOPC
< br>中的地址对应。
11.
如何在
NIOSII
中驱动外部芯片或设备
答:在开发过程中,我们经常会使用外接一些芯片,或外接一
些实
用电路,
比如
AD
芯片、
串并转换芯片等等,
那么如何在
NIOS
II
中去使
用这些
芯片呢
我们在开发中会有多个选择:
1
.如果这个芯片是使用数据和地址总线的,并且补线时没有足
够的单
独引脚,那么这个芯片必须挂接在
tri_stat
p>
总线上,这种用法和我们以
往单片机或
MCU
类似,
在
SOPC
< br>Builder
中直接定义用户逻辑,
如果有
额外的控制引脚,就需要用
PIO
来驱动,虽然公
用数据地址线节省了引
脚,但做控制
时序
费劲了。
2
.如果这个芯片单独使
用数据和地址,那么我们会直接做成
Avalone
总线的
p>
Slave
设备,在
Sopc
Builder
中自己定义
component<
/p>
。需要写
HD
L
模块,自己定控制、状态、数据寄存器和控制位定义,这种方式控制
灵活,易于实现复杂
的控制时序。
3
.在
Quartus
II
工程中画电路模块(或用
HDL
写电路模块),这种方
式是独立于
SO
PC
定义的模块之外的,做一个纯电路的处理模块,有时
候会比
较容易实现某些灵活的处理。
<
/p>
12.
在
SOPC
添加
Avalon
Trisatate
< br>Bridge
时,提示有如下错误,该
如何解决
Tri
state
bridge/tristate
master
requires
a
slave
of
type
Avalon
add
a
slave
of
type
Avalon
tristate.
Generate
按钮为灰色,无法
Generate
答:需要一个专门接三台桥的设备,
把
flash
添加到
sopc
中就可
以了。
13.
在做
count_binary
这个例子时,出现一个错误:
error:
`BUTT
ON_PIO_IRQ'
undeclared
(first
use
in
this
function)
BUTTON_PIO_IRQ
的值如何给他定义
答:这个错误可能是在
sopc
bu
ilder
中定制的
pio
端口名称是
否与
程序中用的不一致,要和程序里的一致,把
pio
组件的名称就改为
butt
on_pio
。
14.
在
Quartus
II
中编译时出现如下错误:
Error:
Node
instance
instantiates
undefined
entity
t_module
点击错误的地方弹出一个对话框这个错误是怎
么回事怎样解决
答:可能是在
SOPC
中所选的
CPU
型号不正确,换一个试试。
15.
怎样自动分配管脚
答:在
Quartus
II
自动分配管脚有一个方法,点击
Assignments->I
mport
Assginments,
导入一
个管脚分配文件,
后缀为
.csv
.
txt
等,
前提是
在顶层
原理
图中各个输入输出的名称要和这个文件中的名称一致。
< br>
16.
在
NIOS
< br>II
中编译时出现如下错误怎么解决错误是不是由
SOP
C
中的
RAM
引起?
< br>
region
ram
is
full
section
.text).
Region
needs
to
be
24672
bytes
l
arger.
address
0x80c1f8
of
section
.rwdata
is
not
within
region
ram
Unable
to
reach
edge_capture
(at
0x00800024)
from
the
global
point
er
(at
0x0081419c)
because
the
offset
(-82296)
is
out
of
the
allowe
d
range,
-32678
to
32767.
答:可能时
RAM
< br>的大小不够,也有可能是中断地址
(exception
add
ress)
的偏余量不够,设置大些就可以了。如果还是出现
这个问题,加
一个
SDRAM
试试。
17
.在
Quartus
II
中,为什么编译一些样板工程都会出错?
Error:
DDR
timing
cannot
be
verified
until
project
has
been
successf
ully
compiled.
Error:
Evaluation
of
Tcl
s
cript
unsuccessful
Error:
Quartus
II
Shell
was
unsuccessful.
2
errors,
1
warning
答:在做样板工程时要注意一个问题:
Due
to
the
library
paths
t
hat
are
coded
into
the
Quartus
settings
for
this
project,
if
a
user
w
ishes
to
modify
the
hardware
design
they
must
first
strip
out
any
o
ld
paths
from
within
the
project
settings
file
(qsf)
在
qsf
文件中找到类似语句
set_global_assignment-nameVHDL_FILE
C:/MegaCore/
这里的目录是初
始
的目录,把它改为正确的目录。
18.
在
NIOSII
IDE
编译时出现如下错误是怎么回事?
system_des
cription/:75:
error:
`ONCHIP_MEMORY_BASE'
undeclared
h
ere
(not
in
a
function)
system_des
cription/:75:
error:
initializer
element
is
not
constant
system_des
cription/:75:
error:
(near
initialization
for
`')
system_des
cription/:75:
error:
initializer
element
is
not
constant
system_des
cription/:75:
error:
(near
initialization
for
`')
答:
ONCHIP_MEMORY_BASE
< br>没有赋值,在
程序的开头加上
#defin
e
ONCHIP_MEMORY_BASE
0x0000000
0
后面的这个地址要与
SOPC
中的<
/p>
对应。
19.
在
NIOS
II
IDE
编译时出现如下错误是怎
么回事?
Pausing
target
processor:
not
responding.
Resetting
and
trying
again:
FAILED
Leaving
target
processor
paused
答:以下是一位
FAE
的回答:
1.
关于
USB-
Blaster
在
Nios
II <
/p>
IDE
下载时会发生偶发性错误,这种现象
主要是
IDE
software
与
Nios
II
CPU
透过
USB-Blaster<
/p>
在做通讯时发生错
误,
若是确认
FPG
上配置没有错误,
连续发生错误的机率应
该是相当的
低,您只需要重新下载即可。
2.
若您使用
Nios
II
IDE
,请尽量配合
SOPC
Builder
重新
build
p>
您的
sy
stem
,并且使用
Quartus
II
重
新
compile
您的
project
,以减少
CPU
与
I
DE
software
不兼容的情形。
20.
在
NIOS
II
IDE
中工程的
System
Library
选项中的这几个选项代
表什么
意思
.text
.rodata
.rwdata
与
reset
p>
.exception
这几个地址之间的
关
系是什么
答:
.text
:
代码
区
.r
odata:
只读数据区,一般存放静态全局变量
.
rwdata:
可读写变量数据区另外还有
p>
.bss:
存放未被初始化的变量。
■
.text
—
the
actual
executable
code
■
.rodata
—
any
read
only
data
used
in
the
execution
of
the
code
■
.rwdata
—
where
read/write
variables
and
pointers
are
stored
■
heap
—
where
dynamically
allocated
memory
is
located
■
stack
—
where
function
call
parameters
and
other
temporary
dat
a
is
stored
21.
怎样在
NIOSII
中操作
PIO
,提供一种参考方法。
答:是这样写
IO
< br>口的:
IOWR_ALTERA_AVALON_PI
O_DATA(LED_PIO_BASE,
led);
首先在找到定义
#
i
nclude<>
#define
IORD_ALTERA_AVALON_PIO_DATA(base)
IORD(base,
0)
#define
IOWR_ALTERA_AVALON_PIO_DATA(base,
data)
IOWR(base,
0,
data)
因此在
NIOSII
中可以调用#
i
< br>nclude<>
库函数
IORD/IOWR
来操作
PIO
。
在
smallsoftwarehello_led_0_sysli
bDebugsystem_des
cription
下的
中
,
有以下内容
:
#define
LED_PIO_TYPE
#define
LED_PIO_BASE
0x00004000
其中
LED_PIO_BASE
(
IO
寄存器地址)为
0x00004000
同
SOPCBuilder
中
< br>设置一致
!
(
其实在
SopcBuilder
中有关
NiosII<
/p>
的配置
,
就是通过来传送给
IDE
的
!)
最后用
IOWR(0x00004000,
0,
led);
替代
IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE,
led);
编译
,
下载到开
发
板上
,
运行成功
!
22.
怎样让
SDRAM
和
FLASH
,
SRAM
的
地址公用
答:
sdram
可以和
sram,flash
共用数据总线和地址总线
p>
.
在
sopc
b
u
ilder
中添加
SDRAM
控制器时,在其
share
pins
via
tristate
选择项上勾
上
Controller
shares
dq/dqm/addr
IO
pins
选项,这样
sdram
可以和
sr
a
m,flash
共用数据总线和地址总线
.
但是
ATERA
不
推荐
这样做,
因为这样
会降低
SDRAM
控制器的性能,在
FPGA
芯片管脚资源比较紧张的时候
迫不得已才这样做。
23.
怎
样使用
DE2
板上的数码管,绑定管脚时需要注意什么请举一<
/p>
个例子说明。
答:
DE
2
板上的数码管只用了
7
位,小数点位
默认为高电平。例
如,在做例程
count_binary
p>
时,需要用到两个数码管,以实现
00
到<
/p>
FF
的计数,
在
SOPC
添加一个
16
位的
PIO
SEVEN_SEG[15..0]
p>
,
绑定管脚时
注意:使
SEVEN_SEG[0..6]
帮定到数码管
HEX0[
6..0]
位,
SEVEN_SEG[8..
1
4]
绑定到数码管
HEX1
[6..0]
位,
SEVEN_SEG[7]
< br>和
SEVEN_SEG[15]
直接接
< br>V
CC
,这样才能让两个数码管正常显示并计数。
24.
在
NIOS
II
IDE
中调试,编译通过的软件时,出现了下面的提
示,是什么原因?
Using
cable
[LPT1]
device
1,
instance
0x00
Processor
is
already
paused
Downloading
00000000
(
0%)
Downloaded
57KB
in
s)
Verifying
00000000
(
0%)
Verify
failed
Leaving
target
processor
paused
答:
Verify
failed
这个问题
说明板子的复位电路可能有问题,或装
载程序的外部
SRAM<
/p>
或
SDRAM
和
CPU
的连接或时序有问题
,
也有可
能是
软件偶尔的错误。若是软件偶尔的错误
,
< br>可以先复位一下
CPU,
然后再下
载程序
;
或者断电后重新下载
.so
f
和
NIOS
II
程序
<
/p>
25.
在练习
C:alterakits
ios2_51examplesverilog
niosI
I_cycloneII_2c35
的工程时,
里面有很多元件
DE2
板上都没有对应的管脚,
比如网
络元件
lan91c111
,使用的
I
P
核,还有
24
位的
ext_flash
,而
DE
2
板上的
FLAS
H
< br>只有
22
位。是不是
SOPC<
/p>
中只能让
DE2
板上有对应管脚的元件存
在,
其它的只能删除
答:
这个目录下的
< br>example
是针对
altera
自己的板子的,
和
DE2
硬
件不能对应,只能作为参考,或者做一些修改后用。
26.
在
SOPC
中加了一个
200KB
的
onchip_memo
ry
,
为什么在
Quartus
II
编译时出现这个错误?
Error:
Selected
device
has
105
RAM
location(s)
of
type
M4K
RAM.
H
owever,
the
current
design
needs
more
than
105
to
successfully
fit
答:
SO
PC
中的
onchip_memory
和
M4K
RAM
根本就不是一个概念
。
Quartus
II
中编译出现这
个错误,是由于
设计
中用到了太多的
M
4K
。
27.
关于
sopc-
builder
中
reset
address
的设置,
一直搞得不
是很明
白。
答:
SOPC
中的
reset
address
指定的是最终全部软件程序代码下载
到的地方,并且程序从
re
set
address
启动。
SOPC
中的
exception
address
指定的是系统异常处理代码存放的地方。
p>
如果
exception
address
和
reset
address
不一样,那么程序从
reset
ad
dress
启动后将把放在
reset
address
处的系统异常处理代码拷贝到
exc
eption
address
。
NIOSII
软件中的
text
p>
address
指定的是程序运行的地方。如果
text
addr
ess
和
p>
reset
address
不一样,那么程序从
reset
address
启动后将把放
在
reset
address
处的普通只读程序代码拷贝到
text
address
。
NIOS
II
软件中的
rodata
address
指定的是只读数据的存放地方。如果
rodata
a
ddress
和
reset
address
不一样,
那么程序从
reset
address
启动后将把
放在
reset
address
处的只读数据拷贝到
rodata
address
。
NIOS
II
软件中的
rwdata
address
指定的是可读写数据的存放地方。如
果
rwdata
address
和
reset
address
不一样,
那么程序从
reset
address
启动后将初始化
rwdata
address
处的可读写数据。
28.
如何提高
NIOS
II
系统的性能
答:主要可以从这几个方面入手:
1
、使用
fast
CPU
类型。
2
、提高系统主频。
3
、优先在
SRAM
中运行程
序,
SDRAM
次之,最后选择
FLA
SH
中运行。
4
、使用片内
RAM
作为数据缓冲,片外
SRAM
次之,最后选
SDRAM
。
5
、
IO
数据传输尽可能采用
DMA
。
6
、对能并行处理的数据考虑使用多
CPU
协同处理。
7
、典型
算法
做成用户指令,有
256
条可以做,足够你用的。
8
、能用
HDL
模块来完成
工作吗能,就用
HDL
模块做成外设来完成吧
< br>
9
、采用
C2H
。
29.
如何优化
NIOS
II
里的
应用
工程
答:
Optimize
your
Nios
II
application
design!
an
Blank
Project
:
Select
Altera
Nios
II
C/C++
Application
2.
In
[your
main
fuctional
c/c++
file]
:
#
i
nclude
#
i
nclude
#......
int
main
(void)
__attribute__
((weak,
alias
(
int
alt_main
(void)
{
......
return
0;
}
3.
Library
Properties
Options
Select
EXIT
Select
C
Library
Select
Device
Drivers
Spicify
linker
s
cript
position,
to
ext_flash,
ext_ram
or
on-chip-ram
30.
关于
verify
failed
的总结
1.
SDRAM
的时序不对
有时候不正确的
pll
clock
phase
shift
for <
/p>
sdram_clk_out
就会导致
S
DRA
M
不能正常工作
:
2.
SDRAM
的连线不对
,
物理板子的连线问题
3.
在调试的时候
,
程序下载的空间不是非易丢失存储器(
non-volatile
m
emory
)或者存储器的空间不够也会导致这
个错误
4.
QuartusII<
/p>
的默认设置导致的错误
Quartus
II
默认将所有没有使用的
IO
口接地
,
这种时候可能导致某些元器
件工作不
正常
;
最好将不用的
IO
口设置为三态
5.
USB-blaster
坏了
,
或者
JTAG
通信的信号噪声太大
JTAG
的端口需要一个弱上拉电阻来抗干扰<
/p>
6.
确保你的
sdram
既连接到
CPU
的指令总线也连接到
CPU
的数据总线
31.
关于
DMA
传输的几点说明:
1
.
memory
到
外设的传输,调用
alt_dma_txchan_ioctl()
时,有一个参
数为
alt_dma_tx_only_on
等
2
.调用
alt_
dma_txchan_send
函数时,在传输结束前就返回一个值,如
果此值为负的话,说明发送请求失败。正确传输结束后,调用
done
函
数。
3
.
接收函
数
alt_dma_rxthan_prepare
类似上面的
1
和
2
4<
/p>
.
传输结束,
有两种可能:
数据传完或者
end
of
packet
(要预先使能)
5
.
SOPCbuilder
中例化时要制定哪些可以访问
DMA
的主端口,
DMA
的
avalon
slave
端口要接
cpu
。
p>
实际传输的最大数可以帮助确定设置的位数
6
.
alt_dma_txchan_ioctl
用于控制
dma
的一些工作性质,使用多的话可<
/p>
以用信号量等来
“
抢占
< br>”
7
.
dma
传输最小应该传
4
字或者其倍
数。
32.
1.
建立
< br>CPU
时,下面的那个
HardWare
Multiply
里面可以选①
Embedded
Multipliers
,②
Logi
c
Elements
,③
None<
/p>
,这三个选项有什么
区别呀
答:
①
Embedded
Multipl
iers
,使用专门的内嵌硬件乘法单元(不
可编程,仅能做乘
法,且乘法速度最快),不是
RAM
。
②
Logic
Eleme
nts
,使用逻辑单元也就是
FPGA
中的查找表(速度较慢)。③
None,
那
就是不要声长硬件乘法器了,这是只能通过软件模拟乘法,速度最慢。
33.
下载是出现
“not
responding”
错误的又一点发现:
答:
在设
计的过程中,
经常使用板子上内部的两个晶振作为
CPU
或
者有些信号的时钟,而且习惯用
osc_2
7
和
osc_50
命名。在绑定管脚时
又经常导入一个
CSV
文件,没有手动一一绑定,而在那个
CSV
文件中<
/p>
晶振管脚名分别为
CLOCK_27,CLOCK_50,
这样系统的
CPU
根本就没有绑
定管脚,不出错才怪。把名称改为
CLOCK_27,CLOCK_50
p>
,重新编译下载
就可以了。
34.
安装了之后,
为什么在
New->Project
时并没有出现
Microtronx
NIOS
II
选项呢
答:这个问题好像难倒过很多人,其实在运行安装的第一步,
里面
有个提示:
Information
Regarding
the
Installation
Procedure
IMPORTANT:
Please
ensure
that
you
specify
the
correct
path
for
the
Altera
Nios
II
Kit
installation
directory
and
the
Cygwin
root
director
y.
The
typical
Altera
Nios
II
Kit
directory
is:c:alterakits
ios2
The
typical
Cygwin
root
directory
is:
c:alteraquartus50
incygwin <
/p>
问题的关键就是上面的路径不正确。
对于
Nios
和的路径分别为
nios_51
和
nios_60,
都不是
nio
s2
,
所以安装后找不到模板工程很正常。
但它的一
些必要文件又确实是安装在了
< br>nios_51
或
nios_60
中。我也遇到了过同
样的问题,想到了一个简单的方法可以解决: