第六讲SOPC系统设计实例

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Builder。如图3.22所示,输入新系统的名称为niosⅡ_system,当
然也可以输入其他名称,但应该注意,所有的名称中都不能出现 空格。Target HDL选项可以选择Verilog,也可以选择VHDL,这 里选择Verilog。按OK按钮,进入SOPC Builder的主界面,如图 3.23所示。SOPC Builder主界面的组成部分在3.1节中已经讲述过, 这里不再赘述。
图3.19 为SOPC系统新建一个工程
图3.20 使用已有工程的配置
图3.21 新工程汇总界面
2.建立顶层设计文件 建立工程之后,需要为工程建立一个顶层设计文件,这个设 计文件的名称应该与工程的名称完全一致。设计文件可以是 QuartusⅡ允许的各种设计输入格式的文件,如Verilog HDL、 VHDL、AHDL及原理图设计文件等。本例中使用原理图设计文
图3.30 添加新组件
SOPC Builder会提示在设计文件的基础上用组件编辑器生成
一个新组件,新组件的信息保存在一个目录中,该目录中包括一 个组件说明文件class.ptf、一个perl脚本文件cb_generator.pl、一个
存储Verilog或VHDL代码及其他相关文件的目录hdl_synthesis,以
LUT_8.v,在HDL Files列表中出现了SEG_LUT_8.v及其相关信息, 如图3.31所示,组件编辑器导入并综合SEG7_LUT_8.v,等待一 段时间之后,组件编辑器完成文件的导入及综合,提示文件综合 成功。此时在组件编辑器下部的信息栏中,提示有两个错误,一 个指出Avalon总线从端口没有clk信号,另一个指出Avalon总线从 端口没有读/写信号。这是由于Verilog文件中的输入/输出信号定 义与Avalon总线标准信号不一致造成的。如果文件综合不成功, 则按提示重新修改SEG7_LUT_8.v文件。
always @(iDIG)
case(iDIG)
4'h1: oSEG = 7'b1111001; 4'h2: oSEG = 7'b0100100;
4'h3: oSEG = 7'b0110000;
4'h4: oSEG = 7'b0011001; 4'h5: oSEG = 7'b0010010;
4'h6: oSEG = 7'b0000010; 4'h7: oSEG = 7'b1111000; 4'h8: oSEG = 7'b0000000; 4'h9: oSEG = 7'b0011000; 4'ha: oSEG = 7'b0001000; 4'hb: oSEG = 7'b0000011; 4'hc: oSEG = 7'b1000110; 4'hd: oSEG = 7'b0100001; 4'he: oSEG = 7'b0000110; 4'hf: oSEG = 7'b0001110; 4'h0: oSEG = 7'b1000000; endcase
图3.22 用SOPC Builder建立一个新系统
图3.23 SOPC Builder主界面
4.向系统中添加NiosⅡ处理器 在SOPC Builder主界面左侧的组件列表中,选中 NiosⅡ Processor,按鼠标右键,在弹出的菜单中选择Add New NiosⅡ Processor,显示如图3.24所示的NiosⅡ处理器配置界面。
end endmodule
代码3.3 SEG7_LUT_8.v的代码。 module SEG7_LUT_8 (oSEG0,oSEG1,oSEG2,oSEG3, oSEG4,oSEG5,oSEG6,oSEG7, iDIG,iWR,iCLK,iRST_N ); input [31:0] iDIG; input iWR,iCLK,iRST_N; output [6:0] oSEG0,oSEG1,oSEG2,oSEG3,oSEG4,oSEG5, oSEG6,oSEG7; reg [31:0] rDIG; always@(posedge iCLK or negedge iRST_N) begin if(!iRST_N) rDIG <= 0; else begin if(iWR) rDIG <= iDIG;
3.5 SOPC系统设计实例
3.5.1 SOPC系统设计流程
SOPC系统设计流程如图3.18所示。设计者首先根据任务要求 决定系统需求,然后用SOPC Builder建立自己的SOPC系统,完成
这项工作后,硬件工程师与软件工程师可以开始协同工作。硬件
工程师首先建立一个顶层设计文件,将生成的SOPC系统例化, 并设置引脚分配、时序要求及其他设计约束,然后编译硬件设计 并将FPGA设计下载到目标板中。在硬件工程师工作的同时,软 件工程师可以用NiosⅡ IDE开发应用软件,并在NiosⅡ IDE中使 用NiosⅡ指令仿真器运行并调试软件,等硬件工程师将硬件设计 下载到目标板中之后,软件工程师将可执行软件下载到目标板上 的NiosⅡ系统中,并在目标板上运行调试软件,如果发现设计不 满足需求,则再改进硬件与软件的设计。
oSEG4,rDIG[19:16] ); oSEG5,rDIG[23:20] );
SEG7_LUT
SEG7_LUT endmodule 如图3.30所示。
u6
u7
(
(
oSEG6,rDIG[27:24] );
oSEG7,rDIG[31:28] );
返回SOPC Builder中,用File>New Component菜单添加新组件,
击Finish按钮完成定时器的设置。
图3.29 添加定时器
8.添加自定义组件七段数码管控制器 SOPC的标准开发板库中不包含DE2,本书附带的光盘中包含 了DE2的SOPC Builder开发板描述(Board Description)及主要的组 件,其中也包括SEG7_LUT_8。为了学习自定义组件的使用方法, 这里先将七段数码管作为SOPC自定义组件添加到SOPC的组件库 中,然后再当作标准组件使用,如果想直接使用SEG7_LUT _8, 请阅读本书3.6节中的相关内容。 先在QuartusⅡ中建立两个Verilog文件,作为七段数码管显示
驱动的控制器,一个是SEG7_LUT.v,如代码3.2所示;另一个是
SEG7_LUT_8.v,如代码3.3所示。SEG_LUT.v是一个查找表,完 成七段码显示的译码,当输入iDIG在0x0~0xF之间变化时,输出
oSEG的七段码也发生相应的变化,并在数码管上显示iDIG的值。
SEG7_LUT_8.v对SEG_LUT.v进行了8次例化,分别对应于七 段数码管HEX0~HEX7。在SEG7_LUT_8.v中,对输入/输出信号
级别,每个级别的功能不同,占用的逻辑资源也不同,本设计选
择占用逻辑资源最少的级别Level 1,如图3.26所示。 按Next按钮可以添加自定义指令,本例中不添加自定义指令, 按Finish按钮结束NiosⅡ控制器的设置。
图3.26 选择JTAG调试模块
5.添加片上存储器
在SOPC Builder主界面左侧的组件列表的Memory组中,选中 On-Chip Memory (RAM or ROM),按鼠标右键,在弹出的菜单中
SEG7_LUT_8.v中例化的SEG_LUT.v不能自动复制,因此最好先 将这两个Verilog文件直接放在目录C:\DE2\niosII_DE2\ seg7_lut_ 8\hdl中。
代码3.2 SEG7_LUT.v的代码。 module SEG7_LUT ( input output reg begin [3:0] [6:0] [6:0] iDIG; oSEG; oSEG; oSEG,iDIG );
选择NiosⅡ/s作为本设计的处理器,从界面中可以看到,
NiosⅡ/s占用约1200~1400个逻辑单元,2个M4K RAM块。由于 可以添加指令缓存,缓存需要占用额外的M4K RAM块,因此 NiosⅡ/s与NiosⅡ/e相比,增加了指令缓存、分支预测、硬件乘 法器及硬件除法器。NiosⅡ/s的最好性能可达25 MIPS。
图3.28 添加JTAG UART
7.添加定时器
在SOPC Builder主界面左侧组件列表的Other组中,选中 Interval Timer,按鼠标右键,在弹出的菜单中选择Add New Interval Timer,显示如图3.29所示的定时器配置界面。按照默认设 置,配置不作改变,即可生成一个初始周期为1 ms的定时器,单
图3.24 选择NiosⅡ处理器配置界面
按Next按钮,设置处理器的指令缓存和紧密耦合指令存储器, 如图3.25所示,选择指令缓存为2 K字节,不使用紧密耦合指令存 储器。
图3.25 设置NiosⅡ处理器的指令缓存与紧密耦合指令存储器
按Next按钮,设置JTAG调试模块,JTAG调试模块分为四个
的定义不是按照Avalon总线从端口标准信号来定义的。将这两个
文件保存在C:\DE2\niosII_DE2\seg7_lut_8\hdl目录中,如果将 SEG7_LUT_8.v作为自定义组件加入SOPC系统,SOPC会自动将
SEG7_LUT_8.v复制到C:\DE2\niosII_DE2\seg7_lut_8\hdl中,但在
及一个存储软件代码的目录HAL。SOPC将这个新组件放在当前 工程目录下,完成后可以马上使用。
按Next按钮进入设计文件添加界面,如图3.31所示。可以添 加HDL文本文件,也可以添加综合之后的文件,按Add HDL
File…按钮,选择C:\DE2\niosII_DE2\seg7_lut_8 \hdl\SEG7_
选择Add New On-Chip Memory (RAM or ROM),显示如图3.27所
示的片上存储器的配置界面。选择存储器类型为RAM,存储器宽 度32位,总内存尺寸40 K字节。单击Finish按钮完成片上存储器 的配置。
图3.27 片上存储器配置界面
6.添加JTAG UART
在SOPC Builder主界面左侧的组件列表的Communication组中, 选中JTAG UART,按鼠标右键,在弹出的菜单中选择Add New JTAG UART,显示如图3.28所示的JTAG UART配置界面。按照默 认设置,配置不作改变,单击Finish按钮完成JTAG UART的设置。
件。
用File>New菜单建立一个新文件,选择Block Diagram/
Schematic File文件,文件名称与工程名称保持一致,为niosii_rtos。
保存新建的文件。
3.用SOPC Builder建立一个新的SOPC硬件系统 单击 工具按钮或者Tools>SOPC Builder菜单启动SOPC
end end SEG7_LUT SEG7_LUT SEG7_LUT u0 u1 u2 ( ( ( oSEG0,rDIG[3:0] oSEG1,rDIG[7:4] oSEG2,rDIG[11:8] _LUT SEG7_LUT
u3
u4 u5
(
( (
oSEG3,rDIG[15:12] );
图3.18 SOPC系统设计流程
3.5.2 SOPC系统设计实例 在本部分内容中,用SOPC系统在DE2平台上实现一个计数器。 先在DE2平台上建立SOPC系统的硬件,这个系统包括一个NiosⅡ/s 嵌入式处理器、一个JTAG UART及一个定时器。另外,我们将加 入一个自定义组件,实现对DE2平台上七段数码管的控制。 1.建立工程 启动QuartusⅡ软件,用New>New Project Wizard…菜单在 QuartusⅡ中新建一个工程,本例中将工程的工作目录设定在 C:\de2\niosII_DE2,工程的名称为niosii_rtos,如图3.19所示。如果 希望使用已有工程的配置,点击图3.19中所示的Using Existing Project Settings按钮,显示如图3.20所示的界面,建议选用DE2系统 光盘中提供的DE2_Top工程的配置。在接下来的向导中,先不用加 入设计文件,器件中选择EP2C35F672C6,向导完成后的汇总界面 如图3.21所示。
相关文档
最新文档