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 ...
随机推荐
- jdbc操作数据库以及防止sql注入
public class pr { public static void main(String[] args) { Connection conn = null; Statement st = nu ...
- pom报错解决方法大全
1.Failure to transfer org.apache.maven.plugins:maven-surefire-plugin:pom 解决方法: Windows: CMD --> c ...
- redis之(十一)redis实现缓存的功能
[一]redis实现缓存的原理 --->利用键的失效时间设置实现缓存技术 --->由于redis的内存有限,可以在redis的配置文件里设置maxmemory的参数.来限制redis最大可 ...
- Balanced Binary Tree——经典题
Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary ...
- KVM-克隆和快照管理
kvm 虚拟机有两部分组成:img镜像文件和xml配置文件 /etc/libvirt/qemu #xml配置文件目录,存在虚拟机所有的详细信息 1.kvm虚拟机克隆 克隆命令 virt-clone - ...
- PowerShell 获取系统的硬件信息
1.获取系统的BIOS的信息: Get-WMIObject -Class Win32_BIOS 2.获取内存信息: Get-WMIObject -Class Win32_PhysicalMemory ...
- 1. Maven - 开始
今天开始记录Maven的学习过程. ☞ 相关明细 操作系统:win7 参考书籍:<maven-definitive-guide_zh>(Maven权威指南) maven版本:3.3.3 ☞ ...
- 洛谷——P1920 成功密码
P1920 成功密码 题目描述 void_rank匪别人的书来看,原本想看杂志颓废的,结果不小心拿错拿成了被导师称作旁门左道的高中数学杂志<成功密码>.数学差得不行的void_rank实在 ...
- VMware Workstation虚拟机进入BIOS
1.<F2>键 2.
- Flask实战第41天:发送短信验证码
本项目使用的短信运营商是阿里云.使用淘宝账号登录阿里云控制台.在“产品与服务”中搜索“短信”进入短信服务 获取AccessKey 输入子账户用户名 权限选择管理短信服务 签名管理:申请签名 模板管理: ...