`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 15:09:32 06/13/2017
// Design Name:
// Module Name: inv_cordivision
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
////////////////////////////////////////////////////////////////////////////////// module inv_cordivision
#(
parameter DATA_SIZE = ,
parameter PIPELINE_LEN =
)
(
input clk, input nd,
input [DATA_SIZE- : ] x_in,
input [DATA_SIZE- : ] y_in,
input [DATA_SIZE- : ] z_in, output rdy,
output[DATA_SIZE- : ] x_out,
output[DATA_SIZE- : ] y_out,
output[DATA_SIZE- : ] z_out
); generate wire rdy_temp [PIPELINE_LEN : ];
wire [DATA_SIZE- : ] x_temp [PIPELINE_LEN : ];
wire [DATA_SIZE- : ] y_temp [PIPELINE_LEN : ];
wire [DATA_SIZE- : ] z_temp [PIPELINE_LEN : ]; assign rdy_temp[] = nd;
assign x_temp[] = x_in;
assign y_temp[] = y_in;
assign z_temp[] = z_in; assign rdy = rdy_temp[PIPELINE_LEN];
assign x_out = x_temp[PIPELINE_LEN];
assign y_out = y_temp[PIPELINE_LEN];
assign z_out = z_temp[PIPELINE_LEN]; genvar i;
for(i=;i<(PIPELINE_LEN);i=i+)
begin : unit
inv_cordivision_unit
#(
.DATA_SIZE ( DATA_SIZE ),
.FRAC_SIZE ( DATA_SIZE- ),
.LEVEL ( i )
)
i2
(
.clk(clk), .nd(rdy_temp[i]),
.x_in(x_temp[i]),
.y_in(y_temp[i]),
.z_in(z_temp[i]), .rdy(rdy_temp[i+]),
.x_out(x_temp[i+]),
.y_out(y_temp[i+]),
.z_out(z_temp[i+])
);
end endgenerate endmodule module inv_cordivision_unit
#(
parameter DATA_SIZE = ,
parameter FRAC_SIZE = ,
parameter LEVEL =
)
(
input clk, input nd,
input signed [DATA_SIZE-:] x_in,
input signed [DATA_SIZE-:] y_in,
input signed [DATA_SIZE-:] z_in, output reg rdy,
output reg signed [DATA_SIZE-:] x_out,
output reg signed [DATA_SIZE-:] y_out,
output reg signed [DATA_SIZE-:] z_out
); parameter[DATA_SIZE-:] ONE = **(FRAC_SIZE);
reg signed [DATA_SIZE-:] x_w=,y_w=,z_w=;
//时序逻辑
always @( posedge clk )begin
rdy <= nd;
x_out <= x_w;
y_out <= y_w;
z_out <= z_w;
end //组合逻辑
always @( * )
begin
x_w = x_in;
if( y_in[DATA_SIZE-] != x_in[DATA_SIZE-] )
begin
y_w = y_in + (x_in>>>(LEVEL));
z_w = z_in - (ONE>>(LEVEL));
end
else
begin
y_w = y_in - (x_in>>>(LEVEL));
z_w = z_in + (ONE>>(LEVEL));
end
end endmodule

测试代码:

`timescale 1ns / 1ps

////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 16:25:28 06/13/2017
// Design Name: inv_cordivision
// Module Name: F:/INV/ise/inv/inv_cordivision_tst.v
// Project Name: inv
// Target Device:
// Tool versions:
// Description:
//
// Verilog Test Fixture created by ISE for module: inv_cordivision
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////// module inv_cordivision_tst; // Inputs
reg clk;
reg nd;
reg [:] x_in;
reg [:] y_in;
reg [:] z_in; // Outputs
wire rdy;
wire [:] x_out;
wire [:] y_out;
wire [:] z_out; // Instantiate the Unit Under Test (UUT)
inv_cordivision uut (
.clk(clk),
.nd(nd),
.x_in(x_in),
.y_in(y_in),
.z_in(z_in),
.rdy(rdy),
.x_out(x_out),
.y_out(y_out),
.z_out(z_out)
); parameter PERIOD = ; initial begin
clk = 'b0;
#(PERIOD/);
forever
#(PERIOD/) clk = ~clk;
end initial begin
// Initialize Inputs
nd <= ;
x_in <= ;
y_in <= ;
z_in <= ; // Wait 100 ns for global reset to finish
#; // Add stimulus here nd <= ;
x_in <= ;
y_in <= ;
z_in <= ; end endmodule

测试结果:

基于coridc算法的定点小数除法器的实现的更多相关文章

  1. 判断用户输入的银行卡号是否正确--基于Luhn算法的格式校验

    开发中,有时候,为了打造更好的用户体验,同时减轻服务器端的压力,需要对于一些如,手机号码,银行卡号,身份证号码进行格式校验 下面是判断银行卡号输入是否正确的代码(基于Luhn算法的格式校验): iOS ...

  2. #研发解决方案#基于Apriori算法的Nginx+Lua+ELK异常流量拦截方案

    郑昀 基于杨海波的设计文档 创建于2015/8/13 最后更新于2015/8/25 关键词:异常流量.rate limiting.Nginx.Apriori.频繁项集.先验算法.Lua.ELK 本文档 ...

  3. 基于DES算法加密的防撞库密码系统项目总结

    项目内容:基于DES算法加密的防撞库密码系统 小组名:zqhzkzkj 目标:1.对用户输入的8位字符进行DES加密,要求用户输入8位密钥 2.对于不同的网站,不同的用户名生成不同的密码 小组成员:周 ...

  4. 陕西中际现代:基于自适应算法的PLC滴灌控制系统

    基于自适应算法的PLC滴灌控制系统 陕西中际现代包装科技有限公司滴灌部 1.介绍 水资源正在成为一种珍贵的资源.城镇的市民使用成千上万立方的水来浇灌花园和绿地.他们依赖于使用固定灌溉计划的控制器.而这 ...

  5. 【转】基于RSA算法实现软件注册码原理初讨

    1 前言 目前,商用软件和共享软件绝大部份都是采用注册码授权的方式来保证软件本身不被盗用,以保证自身的利益.尽管很多常用的许多软件系统的某些版本已经被别人破解,但对于软件特殊行业而言,注册码授权的方式 ...

  6. 基于Zlib算法的流压缩、字符串压缩源码

    原文:基于Zlib算法的流压缩.字符串压缩源码 Zlib.net官方源码demo中提供了压缩文件的源码算法.处于项目研发的需要,我需要对内存流进行压缩,由于zlib.net并无相关文字帮助只能自己看源 ...

  7. 基于MMSeg算法的中文分词类库

    原文:基于MMSeg算法的中文分词类库 最近在实现基于lucene.net的搜索方案,涉及中文分词,找了很多,最终选择了MMSeg4j,但MMSeg4j只有Java版,在博客园上找到了*王员外*(ht ...

  8. 基于Apriori算法的Nginx+Lua+ELK异常流量拦截方案 郑昀 基于杨海波的设计文档(转)

    郑昀 基于杨海波的设计文档 创建于2015/8/13 最后更新于2015/8/25 关键词:异常流量.rate limiting.Nginx.Apriori.频繁项集.先验算法.Lua.ELK 本文档 ...

  9. R语言︱情感分析—基于监督算法R语言实现(二)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:本文大多内容来自未出版的<数据 ...

随机推荐

  1. Ambari2.6.2 HDP2.6.5 大数据集群搭建

    Ambari 2.6.2 中 HDFS-2.7.3 YARN-2.7.3 HIVE-1.2.1 HBASE-1.1.2 ZOOKEEPER-3.4.6 SPARK-2.3.0 注:本文基于root用户 ...

  2. bootloaderd的再解析

    boot的0脚和1脚可以选择启动方式,以前只知道可以选择的方式是nandflash启动,或者选择从norflash启动,当选择nandflash启动时,cpu看到的0地址是ram的0地址,根据是nan ...

  3. mac相关功能

    打开和关闭索引功能 打开:sudo mdutil -a -i on 关闭:sudo mdutil -a -i off 关闭后则无法搜

  4. Winform导入文件

    winfrom的选中文件的路径放进文本框,我还是一个新手,欢迎大家在评论里面多多指教

  5. nginx访问502 gateway,*1 connect() failed (111: Connection refused) while connecting to upstream

    安装好nginx,php环境后,配置虚拟主机,结果访问后就报502 gateway,查看日志文件后,显示错误如下: 2019/04/29 16:24:39 [error] 19433#19433: * ...

  6. Python语言学习之Python入门到进阶

    人们常说Python语言简单,编写简单程序时好像也确实如此.但实际上Python绝不简单,它也是一种很复杂的语言,其功能特征非常丰富,能支持多种编程风格,在几乎所有方面都能深度定制.要想用好Pytho ...

  7. Debian图形界面与字符界面之间的切换

    图形界面切换字符界面 原文出自:https://www.cnblogs.com/qingkai/p/5443572.html 因为不能评论所以摘录过来 第一步: vi /etc/default/gru ...

  8. win10修改TXT文件的关联软件

    打开注册表,按下面路径找: HKEY_CLASSES_ROOT -> txtfile -> shell -> open -> command 在右边可以看到一个默认文件,原来的 ...

  9. 《笨方法学Python》加分题16

    基础部分 # 载入 sys.argv 模块,以获取脚本运行参数. from sys import argv # 将 argv 解包,并将脚本名赋值给变量 script :将参数赋值给变量 filena ...

  10. g++ 学习笔记

    gcc and g++分别是GNU的c & c++编译器.gcc/g++在执行编译的时候一般有下面4步: 1 预处理,生成.i的文件. 命令如下:g++ -E  test.cpp 此命令只进行 ...