基于coridc算法的定点小数除法器的实现
`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算法的定点小数除法器的实现的更多相关文章
- 判断用户输入的银行卡号是否正确--基于Luhn算法的格式校验
开发中,有时候,为了打造更好的用户体验,同时减轻服务器端的压力,需要对于一些如,手机号码,银行卡号,身份证号码进行格式校验 下面是判断银行卡号输入是否正确的代码(基于Luhn算法的格式校验): iOS ...
- #研发解决方案#基于Apriori算法的Nginx+Lua+ELK异常流量拦截方案
郑昀 基于杨海波的设计文档 创建于2015/8/13 最后更新于2015/8/25 关键词:异常流量.rate limiting.Nginx.Apriori.频繁项集.先验算法.Lua.ELK 本文档 ...
- 基于DES算法加密的防撞库密码系统项目总结
项目内容:基于DES算法加密的防撞库密码系统 小组名:zqhzkzkj 目标:1.对用户输入的8位字符进行DES加密,要求用户输入8位密钥 2.对于不同的网站,不同的用户名生成不同的密码 小组成员:周 ...
- 陕西中际现代:基于自适应算法的PLC滴灌控制系统
基于自适应算法的PLC滴灌控制系统 陕西中际现代包装科技有限公司滴灌部 1.介绍 水资源正在成为一种珍贵的资源.城镇的市民使用成千上万立方的水来浇灌花园和绿地.他们依赖于使用固定灌溉计划的控制器.而这 ...
- 【转】基于RSA算法实现软件注册码原理初讨
1 前言 目前,商用软件和共享软件绝大部份都是采用注册码授权的方式来保证软件本身不被盗用,以保证自身的利益.尽管很多常用的许多软件系统的某些版本已经被别人破解,但对于软件特殊行业而言,注册码授权的方式 ...
- 基于Zlib算法的流压缩、字符串压缩源码
原文:基于Zlib算法的流压缩.字符串压缩源码 Zlib.net官方源码demo中提供了压缩文件的源码算法.处于项目研发的需要,我需要对内存流进行压缩,由于zlib.net并无相关文字帮助只能自己看源 ...
- 基于MMSeg算法的中文分词类库
原文:基于MMSeg算法的中文分词类库 最近在实现基于lucene.net的搜索方案,涉及中文分词,找了很多,最终选择了MMSeg4j,但MMSeg4j只有Java版,在博客园上找到了*王员外*(ht ...
- 基于Apriori算法的Nginx+Lua+ELK异常流量拦截方案 郑昀 基于杨海波的设计文档(转)
郑昀 基于杨海波的设计文档 创建于2015/8/13 最后更新于2015/8/25 关键词:异常流量.rate limiting.Nginx.Apriori.频繁项集.先验算法.Lua.ELK 本文档 ...
- R语言︱情感分析—基于监督算法R语言实现(二)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:本文大多内容来自未出版的<数据 ...
随机推荐
- Vue父子组件生命过程
加载渲染过程 父beforeCreate->父created->父beforeMount->子beforeCreate->子created->子beforeMount-& ...
- Appium Capabilities 详解(Android适配/IOS后续再补充)
Appium 关键字 关键字 描述 实例 automationName 你想使用的自动化测试引擎 Appium (默认) 或 Selendroid platformName 你要测试的手机操作系统 i ...
- 切面编程AOP之Castle.Core
1.Nuget中搜索Castle.Core并install 2.创建一个普通的类(注意类中只有标记virtual才能实现拦截 ) public class TestInterceptor { publ ...
- Struts2源码解析-----转载
前面一节描述的Struts2很多东西,这节是对源码进行分析描述,通过这一节应该对struts2有了清楚认识! 还是把Struts2这个框图贴出来: 第一步:HttpServletRequest进入到S ...
- NoteBook学习(二)-------- Zeppelin简介与安装
Zeppelin官网地址: http://zeppelin.apache.org/ Github地址: https://github.com/apache/zeppelin (参照官网) 1.什么是z ...
- PHP整理--PHP面向对象
一.定义类 使用关键字class定义 二.实例化对象 使用关键字new实例化对象 三.类成员的添加和访问 (1)类成员:属性.方法.常量 (2)添加成员需要使用修饰符 public.protect ...
- 有关ajax的理解;
jQuery是JavaScript封装的一个库,里面封装了一些便于我们使用的方法,同时还有$.ajax()的一些理解需要我们更加深入了解 ajax简介: 实现后台与前台交互的功能或方法就叫做ajax: ...
- jquery倒计时按钮常用于验证码倒计时
<!doctype html><html><head> <meta charset="utf-8"> <title>jq ...
- 设置PL/SQL 快捷键
TOOLS-preferences--user interface--editor--Autoreplace--enabled (check)--address(C:\Program Files (x ...
- 《修炼之道:.NET开发要点精讲》读书笔记(四)
委托的作用:1)它允许把方法作为参数,传递给其它的模块:2)它允许我们同时调用多个具有相同签名的方法:3)它允许我们异步调用任何方法. “方法签名”指方法的参数个数.参数类型以及返回值等,具有相同签名 ...