zoukankan      html  css  js  c++  java
  • Avalon Slave外设简单实现——DE1-SOC学习笔记(2)

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

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

    image_thumb46_thumb

        一、硬件设计

          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

    image_thumb[1]

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

    image_thumb[3]

    image_thumb[6]

    image_thumb[8]

    注意:这里WORDS与SYMBOL的区别

           3)完成编辑,保存

         系统搭建

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

    image_thumb[10]

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

    二) 软件设计

  • 相关阅读:
    微服务之初识微服务
    常见的认证机制及JSON WEB TOKEN
    深入理解缓存之缓存预热与淘汰策略
    深入理解缓存之缓存和数据库的一致性
    深入理解缓存之缓存存在的问题及应对措施
    深入理解缓存之常见的缓存算法
    计算机网络之HTTP、HTTPS、HTTP2
    计算机网络之TCP(三次握手、四次挥手等),UDP及DNS
    计算机网络之网络体系架构与IP
    深入理解MyBatis(四)--缓存
  • 原文地址:https://www.cnblogs.com/blinkingstar/p/4299022.html
Copyright © 2011-2022 走看看