Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
intraPE1.v
Package: inter_prediction(verilog).rar [view]
Upload User: abszbd2002
Upload Date: 2020-10-12
Package Size: 33407k
Code Size: 2k
Category:
Compress-Decompress algrithms
Development Platform:
VHDL
- module intraPE1 (clk,reset_n,in0,in1,in2,in3,IsShift,IsStore,IsClip,full_bypass,round_value,shift_len,
- PE_out_reg,PE_out,sum_out);
- input clk,reset_n;
- input [15:0] in0,in1,in2,in3;
- input IsShift;
- input IsStore;
- input IsClip;
- input full_bypass;
- input [4:0] round_value;
- input [2:0] shift_len;
- reg shift_reg,store_reg,clip_reg,bypass_reg;
- reg [4:0] value_reg;
- reg [2:0] len_reg;
- output [15:0] PE_out_reg;
- output [7:0] PE_out;
- output [15:0] sum_out;
- // reg [15:0] sum_out;
- reg [15:0] PE_out_reg;
- // reg [7:0] PE_out;
- reg [15:0] in0_reg,in1_reg,in2_reg,in3_reg;
- wire [15:0] sum1;
- wire [15:0] sum2;
- wire [16:0] round_tmp;
- wire [15:0] round_out;
- wire [7:0] clip_out;
- always @ (posedge clk)
- if (reset_n== 1'b0)
- begin
- shift_reg <= 1'b0;
- store_reg <= 1'b0;
- clip_reg <= 1'b0;
- bypass_reg <= 1'b0;
- value_reg <= 5'b0;
- len_reg <= 3'b0;
- end
- else
- begin
- shift_reg <= IsShift;
- store_reg <= IsStore;
- clip_reg <= IsClip;
- bypass_reg <= full_bypass;
- value_reg <= round_value;
- len_reg <= shift_len;
- end
- always @ (posedge clk)
- if(reset_n == 1'b0)
- begin
- in0_reg <= 16'b0;
- in1_reg <= 16'b0;
- in2_reg <= 16'b0;
- in3_reg <= 16'b0;
- end
- else
- begin
- in0_reg <= in0;
- in1_reg <= in1;
- in2_reg <= in2;
- in3_reg <= in3;
- end
- assign sum1 = (bypass_reg)? 0:(in0_reg + in1_reg);
- assign sum2 = (bypass_reg)? 0:((shift_reg)? {in2_reg[14:0],1'b0}:(in2_reg + in3_reg));
- assign sum_out = (bypass_reg)? 0:(sum1 + sum2);
- // always @ (posedge clk)
- // if (reset_n == 1'b0)
- // sum_out <= 16'b0;
- // else
- // begin
- // if (bypass_reg)
- // sum_out <= 16'b0;
- // else sum_out <= sum1+sum2;
- // end
- always @ (posedge clk)
- if (reset_n == 1'b0)
- PE_out_reg <= 0;
- else if (store_reg)
- PE_out_reg <= sum_out;
- assign round_tmp = sum_out + value_reg;
- assign round_out = round_tmp >> len_reg;
- assign clip_out = (clip_reg)? ((round_out[15] == 1'b1)? 8'd0:((round_out[15:8] == 0)? round_out[7:0]:8'd255))
- :round_out[7:0];
- assign PE_out = (bypass_reg)? in0_reg[7:0]:clip_out;
- /* always @ (posedge clk)
- if (reset_n ==1'b0)
- PE_out <= 8'b0;
- else
- begin
- if (bypass_reg)
- PE_out <= in0_reg[7:0];
- else PE_out <= clip_out;
- end*/
- endmodule