码迷,mamicode.com
首页 > 其他好文 > 详细

Avalon Slave外设简单实现——DE1-SOC学习笔记(2)

时间:2015-02-24 23:22:27      阅读:1453      评论:0      收藏:0      [点我收藏+]

标签:

           在前一篇文里已经整理了一些Cyclone-V与Avalon-MM的资料,在这篇文里给一个 Slave设备的简单实现——7段数码管实现。

       先上一个Avalon-MM的一般时序图:

技术分享

    一、硬件设计

      IP逻辑实现:

      当作为Avalon总线的Slave时,上图中的控制信号、地址信号都为输入,另外还会有一个ChipSlect信号。当有设备发出对该设备的read/write请求时,ChipSlect信号有效,同时addres为从设备的寄存器地址。例如该设备基址为0x0100,有两个32位寄存器,那么当某主设备发出地址0x0104选中该设备时,ChipSelect有效,同时从设备收到的Address为1(在该例中地址以words为单位)。

      7段数码管控制器是一个只写设备,故只需要clk,chipselect,address,write,及writedata信号即可。SystemVerilog实现逻辑如下:

//seg7.sv
module BCD2Seg(
 input logic [3:0] din,
 output logic [7:0] dout
 );
 
    always_comb
    begin
    case (din)
    b0000:dout<=b100_0000;
    b0001:dout<=b111_1001;
    b0010:dout<=b111_1001;
    b0011:dout<=b011_0000;
    b0100:dout<=b001_1001;
    b0101:dout<=b010_0010;
    b0110:dout<=b000_0010;
    b0111:dout<=b111_1000;
    b1000:dout<=b000_0000;
    b1001:dout<=b001_0000;
    default:dout<=b111_1111;
    endcase
   end
 endmodule 
 
 module seg7_disp  #(parameter N=6)(
input logic clk,reset,chipselect,
 input logic [3:0]byteenable,
 input logic write,
 input logic [31:0] writedata,
 output logic [47:0] segout
 );
 //assert(N<=8);
 logic [N-1:0][3:0] bcdcon;//to decoder
 genvar i;
 generate 
    for(i=0;i<N;i++)
        begin:gen1
        BCD2Seg ui(.din(bcdcon[i][3:0]),.dout(segout[i*8+7:8*i]));
        end
 endgenerate 
 always @(posedge clk)
 begin
    if(reset)
        bcdcon<=0;
    if(chipselect==b1)
        begin
        if(write)
        bcdcon    <=writedata;
        end
 end
 
 endmodule

      Avalon 总线IP封装

   1)打开Qsys,在IP Catalog中选择New Component 新建用户器件(IP Core),编辑必要的信息并选择文件,Analyze File

技术分享

    2)编辑Signals和Interfaces选项卡,根据Module信号的功能选择对应的SignalType,在Interfaces选项卡设置clock.reset,以及avalon信号的parameter

技术分享

技术分享

技术分享

注意:这里WORDS与SYMBOL的区别

 

       3)完成编辑,保存

     系统搭建

      1)在Qsys中加入自定义的IP seg7,连接至hps的h2f_lw_axi_master接口,分配基址

技术分享

 

     2)Generate HDL,返回至Quartus II
     3)连接外部信号
     4) 编译

二) 软件设计

Avalon Slave外设简单实现——DE1-SOC学习笔记(2)

标签:

原文地址:http://www.cnblogs.com/blinkingstar/p/4299022.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!