⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scrambler.v

📁 多路并行扰码
💻 V
字号:
// Parallel scrambler
//
// xikang
// 2003-6-10
//


module pscrambler( en, reset, clk, clken, datin, datout );
	input reset, clk, clken, en;

`include "scrambler.h"

	// definitions in scrambler.h
	// N : dat bit width
	// L : length of scrambler
	// Ap, Bp, Cp, Dp: used for scrambling
	// A_1p, B_1p, C_1p, D_1p: used for discrambling

	input [1 : N] datin;
	output reg [1 : N] datout;

	reg [1 : L] d;   //state registers
	reg [1 : L] d_tmp;   //state registers
	reg [1 : N] s;   //state registers

	always @ ( posedge clk, negedge reset )
	begin : label_scrambler
		integer i, j;
		reg [1 : L] tmpL;
		reg [1 : N] tmpN;

		if( ! reset )
		begin
			d 		<= 0;
			datout	<= 0;
		end
		else if( clken )
		begin
			d_tmp = 0;
			for( i = 1; i <= L; i = i + 1 )
			begin
				tmpL = Ap[i];
				tmpN = Bp[i];
				for( j = 1; j <= L; j = j + 1 )
					d_tmp[i] = d_tmp[i] ^ ( tmpL[j] & d[j] );

				for( j = 1; j <= N; j = j + 1 )
					d_tmp[i] = d_tmp[i] ^ ( tmpN[j] & datin[j] );
			end
			d		<= d_tmp;

			s = 0;
			for( i = 1; i <= N; i = i + 1 )
			begin
				tmpL = Cp[i];
				tmpN = Dp[i];
				for( j = 1; j <= L; j = j + 1 )
					s[i] = s[i] ^ ( tmpL[j] & d[j] );

				for( j = 1; j <= N; j = j + 1 )
					s[i] = s[i] ^ ( tmpN[j] & datin[j] );
			end

			if( en )
				datout	<= s;
			else
				datout	<= datin;
		end
	end
endmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -