Wishbone总线从接口转Xilinx MIG (Spartan 6)
//***************************************************************************
// Copyright(c)2016, Lyu Yang
// All rights reserved
//
// File name : wb_xmigddr.v
// Module name :
// Author : Lyu Yang
// Email :
// Date : 2016-12-00
// Version : v1.0
//
// Abstract : DDR Chip Clock Source is 50MHz.
//
// Modification history
// ------------------------------------------------------------------------
// Version Date(yyyy/mm/dd) name
// Description
//
// $Log$
//***************************************************************************
`timescale 1ns / 100ps
module wb_xmigddr (
input wb_clk_i,
input wb_rst_i, // Wishbone Interface
input wb_cyc_i,
input wb_stb_i,
input wb_we_i,
input [:] wb_sel_i,
input [:] wb_adr_i,
input [:] wb_dat_i,
output [:] wb_dat_o,
output wb_ack_o, // DDR Chip Signals
output mcb3_dram_ck,
output mcb3_dram_ck_n,
inout [:] mcb3_dram_dq,
output [:] mcb3_dram_a,
output [:] mcb3_dram_ba,
output mcb3_dram_ras_n,
output mcb3_dram_cas_n,
output mcb3_dram_we_n,
output mcb3_dram_odt,
output mcb3_dram_cke,
output mcb3_dram_dm,
inout mcb3_dram_udqs,
inout mcb3_dram_udqs_n,
output mcb3_dram_udm,
inout mcb3_dram_dqs,
inout mcb3_dram_dqs_n,
inout mcb3_rzq,
inout mcb3_zio
); // DDR DRAM Calib Done
wire c3_calib_done;
// BIU Signals
wire c3_px_cmd_en;
wire [:] c3_px_cmd_instr;
wire [:] c3_px_cmd_byte_addr;
wire c3_px_cmd_full;
wire c3_px_wr_en;
wire c3_px_wr_empty;
wire c3_px_rd_en;
wire c3_px_rd_empty; // Read, Write and Ack Signals
wire wb_req;
reg wb_req_r, wb_ack_write, wb_ack_read; assign wb_req = wb_stb_i & wb_cyc_i & c3_calib_done; always @(posedge wb_clk_i)
wb_req_r <= wb_req & !wb_ack_o; assign wb_req_new = wb_req & !wb_req_r; // Write and Read Ack Signal
always @(posedge wb_clk_i)
wb_ack_write <= wb_req & wb_we_i & !wb_ack_write & !c3_px_cmd_full; always @(posedge wb_clk_i)
wb_ack_read <= wb_req & !wb_we_i & !wb_ack_read & !c3_px_rd_empty; assign wb_ack_o = (wb_we_i ? wb_ack_write : wb_ack_read) & wb_stb_i;
assign c3_px_cmd_instr = {'b00, ~wb_we_i};
assign c3_px_cmd_byte_addr = {wb_adr_i[:], 'b00};
assign c3_px_wr_en = (wb_stb_i & wb_cyc_i & wb_we_i) ? wb_req_new : 'b0;
assign c3_px_rd_en = (wb_stb_i & wb_cyc_i & !wb_we_i) ? wb_ack_read : 'b0;
assign c3_px_cmd_en = (wb_stb_i & wb_cyc_i & wb_we_i) ? wb_ack_write : wb_req_new & !wb_we_i; // Xilinx Spartan6 MIG
mig_spartan6 memc_ddr
(
// controller clock and reset
.c3_sys_clk (wb_clk_i),
.c3_sys_rst_i (wb_rst_i), // user insterface signals
.c3_p0_cmd_clk (wb_clk_i),
.c3_p0_cmd_en (c3_px_cmd_en),
.c3_p0_cmd_instr (c3_px_cmd_instr),
.c3_p0_cmd_bl ('d0),
.c3_p0_cmd_byte_addr (c3_px_cmd_byte_addr),
.c3_p0_cmd_empty (),
.c3_p0_cmd_full (c3_px_cmd_full),
.c3_p0_wr_clk (wb_clk_i),
.c3_p0_wr_en (c3_px_wr_en),
.c3_p0_wr_mask (~wb_sel_i),
.c3_p0_wr_data (wb_dat_i),
.c3_p0_wr_full (),
.c3_p0_wr_empty (c3_px_wr_empty),
.c3_p0_wr_count (),
.c3_p0_wr_underrun (),
.c3_p0_wr_error (),
.c3_p0_rd_clk (wb_clk_i),
.c3_p0_rd_en (c3_px_rd_en),
.c3_p0_rd_data (wb_dat_o),
.c3_p0_rd_full (),
.c3_p0_rd_empty (c3_px_rd_empty),
.c3_p0_rd_count (),
.c3_p0_rd_overflow (),
.c3_p0_rd_error (),
// port1
.c3_p1_cmd_clk (),
.c3_p1_cmd_en ('b0),
.c3_p1_cmd_instr (),
.c3_p1_cmd_bl (),
.c3_p1_cmd_byte_addr (),
.c3_p1_cmd_empty (),
.c3_p1_cmd_full (),
.c3_p1_wr_clk (),
.c3_p1_wr_en ('b0),
.c3_p1_wr_mask (),
.c3_p1_wr_data (),
.c3_p1_wr_full (),
.c3_p1_wr_empty (),
.c3_p1_wr_count (),
.c3_p1_wr_underrun (),
.c3_p1_wr_error (),
.c3_p1_rd_clk (),
.c3_p1_rd_en ('b0),
.c3_p1_rd_data (),
.c3_p1_rd_full (),
.c3_p1_rd_empty (),
.c3_p1_rd_count (),
.c3_p1_rd_overflow (),
.c3_p1_rd_error (),
// port2
.c3_p2_cmd_clk (),
.c3_p2_cmd_en ('b0),
.c3_p2_cmd_instr (),
.c3_p2_cmd_bl (),
.c3_p2_cmd_byte_addr (),
.c3_p2_cmd_empty (),
.c3_p2_cmd_full (),
.c3_p2_wr_clk (),
.c3_p2_wr_en ('b0),
.c3_p2_wr_mask (),
.c3_p2_wr_data (),
.c3_p2_wr_full (),
.c3_p2_wr_empty (),
.c3_p2_wr_count (),
.c3_p2_wr_underrun (),
.c3_p2_wr_error (),
.c3_p2_rd_clk (),
.c3_p2_rd_en ('b0),
.c3_p2_rd_data (),
.c3_p2_rd_full (),
.c3_p2_rd_empty (),
.c3_p2_rd_count (),
.c3_p2_rd_overflow (),
.c3_p2_rd_error (),
// port3
.c3_p3_cmd_clk (),
.c3_p3_cmd_en ('b0),
.c3_p3_cmd_instr (),
.c3_p3_cmd_bl (),
.c3_p3_cmd_byte_addr (),
.c3_p3_cmd_empty (),
.c3_p3_cmd_full (),
.c3_p3_wr_clk (),
.c3_p3_wr_en ('b0),
.c3_p3_wr_mask (),
.c3_p3_wr_data (),
.c3_p3_wr_full (),
.c3_p3_wr_empty (),
.c3_p3_wr_count (),
.c3_p3_wr_underrun (),
.c3_p3_wr_error (),
.c3_p3_rd_clk (),
.c3_p3_rd_en ('b0),
.c3_p3_rd_data (),
.c3_p3_rd_full (),
.c3_p3_rd_empty (),
.c3_p3_rd_count (),
.c3_p3_rd_overflow (),
.c3_p3_rd_error (), // ddr2 chip signals
.mcb3_dram_dq (mcb3_dram_dq),
.mcb3_dram_a (mcb3_dram_a),
.mcb3_dram_ba (mcb3_dram_ba),
.mcb3_dram_ras_n (mcb3_dram_ras_n),
.mcb3_dram_cas_n (mcb3_dram_cas_n),
.mcb3_dram_we_n (mcb3_dram_we_n),
.mcb3_dram_odt (mcb3_dram_odt),
.mcb3_dram_cke (mcb3_dram_cke),
.mcb3_dram_dm (mcb3_dram_dm),
.mcb3_dram_udqs (mcb3_dram_udqs),
.mcb3_dram_udqs_n (mcb3_dram_udqs_n),
.mcb3_dram_udm (mcb3_dram_udm),
.mcb3_dram_dqs (mcb3_dram_dqs),
.mcb3_dram_dqs_n (mcb3_dram_dqs_n),
.mcb3_dram_ck (mcb3_dram_ck),
.mcb3_dram_ck_n (mcb3_dram_ck_n),
.mcb3_rzq (mcb3_rzq),
.mcb3_zio (mcb3_zio),
.c3_clk0 (),
.c3_rst0 (),
.c3_calib_done (c3_calib_done)
); endmodule
Wishbone总线从接口转Xilinx MIG (Spartan 6)的更多相关文章
- openrisc 之 Wishbone总线学习笔记——接口信号定义
这部分内容就是copy下来的,网上到处都有.先看看接口啥样子,在详细说明 接口定义copy http://blog.csdn.net/ce123/article/details/6929897.百度文 ...
- openrisc 之 Wishbone总线学习笔记——总线互联
一,总线命名规范 1,wishbone总线接口信号都是高电平有限 2,wishbone接口信号都是以 _i ,或者是 _o 结束.i表示输入, o表示输出. ()表示该信号为总线信号,总线位宽可以大于 ...
- OR1200处理器中Wishbone总线接口模块WB_BIU介绍
下面内容摘自<步步惊芯--软核处理器内部设计分析>一书 WB_BIU模块是OR1200处理器与外部Wishbone总线连接的接口模块.15.1节给出了WB_BIU模块的对外连接关系,并指出 ...
- KC705E 增强版 基于FMC接口的Xilinx Kintex-7 FPGA K7 XC7K325T PCIeX8 接口卡
KC705E 增强版 基于FMC接口的Xilinx Kintex-7 FPGA K7 XC7K325T PCIeX8 接口卡 一.板卡概述 本板卡基于Xilinx公司的FPGAXC7K325T-2FF ...
- 330-支持PXIE带FMC接口的Xilinx FPGA XC7K325T PCIeX8 接口卡平台
支持PXIE带FMC接口的Xilinx FPGA XC7K325T PCIeX8 接口卡平台 一.板卡概述 本板卡基于Xilinx公司的FPGAXC7K325T-2FFG900 芯片,pin_ ...
- 270-VC709E 增强版 基于FMC接口的Xilinx Vertex-7 FPGA V7 XC7VX690T PCIeX8 接口卡
VC709E 增强版 基于FMC接口的Xilinx Vertex-7 FPGA V7 XC7VX690T PCIeX8 接口卡 一.板卡概述 本板卡基于Xilinx公司的FPGA XC7V ...
- openrisc 之 Wishbone总线学习笔记——总线特性
特性: 一,互联方式: 支持点到点.共享总线.十字交叉(Crossbar)和基于交换结构(Switch fabric)的互联. 二,数据操作方式:单次读/写操作.块读/写操作,读改写(RMW,Read ...
- modelsim仿真xilinx mig ip core相关问题
1.运用自动化脚本文件 do sim.do 其中不支持 .f文件 , 需要直接vlog 2.对于mig模型采用下面句型(根据example中do sim.do文件) vlog -sv +define ...
- PCI总线目标接口状态机设计
module state_machine (devsel_l, trdy_l, stop_l, pci_ad_oe, dts_oe, par_oe, bk_oe, pci_ad_en, hi ...
随机推荐
- python_基于反射模拟Web框架路由系统
根据用户输入的内容,导入模块 #根据用户输入的内容,导入模块 inp = input("请输入模块名: ") print(inp,type(inp)) dd = __import_ ...
- [PAT] 1143 Lowest Common Ancestor(30 分)1145 Hashing - Average Search Time(25 分)
1145 Hashing - Average Search Time(25 分)The task of this problem is simple: insert a sequence of dis ...
- LeetCode解题报告—— Reverse Linked List II & Restore IP Addresses & Unique Binary Search Trees II
1. Reverse Linked List II Reverse a linked list from position m to n. Do it in-place and in one-pass ...
- EL表达式使用时出现NumberFormatException异常
从后端数据库取出书本集合,然后循环输出到前端表格: <c:forEach items="${bookManagedBean.bookList}" var="book ...
- nginx+uwsgi+django+virtualenv+supervisor部署web服务器
wsgi 全称web server gateway interface,wsgi不是服务器,也不是python模块,只是一种协议,描述web server如何和web application通信的规则 ...
- SQLiScanner:又一款基于SQLMAP和Charles的被动SQL 注入漏洞扫描工具
https://blog.csdn.net/qq_27446553/article/details/52610095
- STL模板整理 list
介绍: list容器是一种序列式容器,它是STL实现的双向链表,与vector相比它可以实现快速的插入和删除,但是不能够快速的随机访问. 头文件: #include <list> 构造函数 ...
- apache几个常见配置文件的作用
进行虚拟主机配置 NameVirtuaHost *:80 表示基于名称的虚拟主机 *:80表示监听本机所有IP的80端口上提供HTTP服务,*可以设置为具体IP<VirtualHost *:8 ...
- 使用supervisor管理后台进程
在linux中supervisor是用来管理后台进程的,是一个用python写的进程管理工具,可以让宕机的进程重启.这里我们大概讲一下用他来管理uWSGI. 一.安装supervisor 1.pyth ...
- scrapy抓取拉勾网职位信息(一)——scrapy初识及lagou爬虫项目建立
本次以scrapy抓取拉勾网职位信息作为scrapy学习的一个实战演练 python版本:3.7.1 框架:scrapy(pip直接安装可能会报错,如果是vc++环境不满足,建议直接安装一个visua ...