从Quartus II 11.0开端,喜新厌旧的Altera就诲人不倦的炒作SOPC Builder的替代者Qsys。记住上一年参与他们的研讨会时就现已炒得炽热,现在12.0sp2都现已release了,12今后更是彻底摒弃了SOPC Buider,假如再不赶紧找个理由上Qsys练练手,咱可就要OUT了。
正好近期对uC/OS十分感兴趣,苦于手上没有一款比较高端的板子用于实践。所以经过层层联系终究在Altera的大学方案司理John处讨得一套TerasIC的DE2-115,板载EP4CE115F29C7N器材,丰厚的片上资源和外设足以敷衍各种功用需求。上个图,让各位看官也垂涎欲滴。
图1
废话就此打住,后边要上电有营养的文字。话说特权同学也是第一次触摸Qsys,尽管这两天抽暇恶补了一下Qsys的各种pdf,但究竟学海无涯苦作舟,咱也就多懂点皮裘,提早布鼓雷门一下,仅仅实实在在的把自己知道的、理解的、体会的逐个道来,期间必定有遗漏和不当之处,乃至也会带些疑问而来,还请高手不吝惜键盘跟帖点拨。
第一步当然是新建工程,这等小儿科过程不详究,直接步入主题。如图2所示,两种方法均可翻开Qsys。
图2
进入Qsys后,如图3所示,界面窗口的布局内容多少还有些似曾相识,究竟仍是SOPC Builder一脉相承的,一个最大的改变时Qsys tabs的选项要比SOPC Buider多得多,Qsys的更多体系个性化修正和设置也都得益于此了。
图3
初度翻开Qsys,System Content中默许现已增加了一个孤零零的CLOCK组件,其他啥也没有,光杆司令仅仅个铺排,啥活干不了。所以乎,咱觉得在Component Library中各种查找,增加了几个常用组件,如NIOS II处理器、JTAG UART、定时器TIMER、8bit输出PIO、system ID和200KB的片内RAM。如图4所示,这些常用的组件各就各位,根本就能够建立起一个最小嵌入式体系了,至少是能够写代码在线运转程序的。
图4
不过,看图4咱可就有点看不懂了,SOPC Builder可不是这样,Connections应该是彻底在增加组件过程中主动互联上才对的,而Qsys则一片空白,形似啥都不衔接,甭说,还真这么回事。那么就这么着把,必定不能够,人家体系必定停工。怎么办?自己着手,锦衣玉食!找了相关材料,都说Qsys能够很智能的进行组件的互联,愣是没找到一个“智能按键”让他们主动互联,看来Altera把这项检测真水平的活都下放给最智能的人脑来干了,能不智能吗?哈哈,好了,还好特权同学根柢不差,尽管曾经都让SOPC Buider自个衔接从不干涉,可是实践接口都是牢记于心的,三下五除二便衔接成功。如图5所示,看到小圆圈点点空心实心就会改变,实心代表衔接上了。这衔接的活可好玩了,一点不比那些年不知道祸害了多少有志青年的“连连看”差多少,那比得是速度,咱比的是精确。体系的衔接其实也十分简略,咱们的时钟clk和复位reset都没有做太杂乱,都是clk_0组件输出,所以一切的组件都和clk_0的时钟复位衔接上就对了;CPU的数据存储器和代码存储器都必须由片内RAM来担任,所以nios2_qsys的data_master和instruction_master均与代表onchip_mem的从机总线s1衔接上。而其他作为总线slave的外设均衔接到nios2_qsys的data_master上即可。
图5
别的,要阐明的是作为体系与外部衔接的接口不像SOPC Buider相同直接引出了,需求设计者特别设置一下。如图6所示,挑选Export列的特点为*_external connection,然后该接口前面会呈现一个export的图标。
图6
接着咱们还要双击翻开nios2_qsys组件,将其Reset Vector和Exception Vector均设为onchip_mem。如图7所示。
图7
就此,一个美丽的测验体系建立结束,后边的工作便是分配地址、中止优先级等,这个能够好像SOPC Builder相同运用菜单栏上的主动别离选项一键分配。特权同学就常常这么干,咱对地址还真没考究,中止优先级有时还能够根据需求调整一下。
前面提到了Qsys tabs是一大特征,这儿不逐个细说,偷闲贴几张图。我们自己运用的时分能够渐渐体会。如图8,Address Map对地址的办理一望而知,并且关于不同的Master能够有不同的地址空间映射。
图8
如图9所示,System Inspector中罗列一切的信号接口以及相关特点参数,乃至能够在此处进行修正。
图9
如图10所示,HDL Example中直接给出了当时体系的例化模板,直接复制到工程顶层模块后进行修正即可,这比之前专门要到工程目录下找相关文件检查要便利得多。
图10
最终,如图11所示,Generation里能够挑选体系仿真、归纳以及各种输出的相关设置,最终点击右下角的Generate即可发动当时体系的生成。我们可别忘了在Output Directory中设置后体系输出途径。
图11