亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? invmod.v

?? verilog實現(xiàn)的1024位的大數(shù)模逆算法
?? V
?? 第 1 頁 / 共 2 頁
字號:
/*
	
	m: 60 - 7F
	a: 80 - 9F
	u: 120 - 13F
	v: 140 - 15F
	B: 160 - 17F
	D: 180 - 19F
*/

`define u_base_addr 10'b01_0010_0000
`define v_base_addr 10'b01_0100_0000
`define m_base_addr 10'b00_0110_0000
`define B_base_addr 10'b01_0110_0000

module InvMod(
				clk,
				Rst_n,
				
				InvMod_wren,
				InvMod_rden,
				InvMod_wraddr,
				InvMod_rdaddr,
				InvMod_q,
				InvMod_data,
				
				InvMod_valid,
				InvMod_start,
				InvMod_done,
				
				InvMod_a_addr,
				InvMod_D_addr
				);

input clk,Rst_n;
input InvMod_start;
input [9:0] InvMod_a_addr,InvMod_D_addr;
input [31:0]	InvMod_q;

output InvMod_wren,InvMod_rden;
output [9:0] InvMod_rdaddr,InvMod_wraddr;
output InvMod_valid,InvMod_done;

output [31:0]	InvMod_data; 
reg  InvMod_valid,InvMod_done;

reg  [9:0]	temp_rdaddr,temp_wraddr;
reg  temp_rden,temp_wren;
reg	 [31:0]	temp_data;
reg  [31:0]	temp_reg;
reg  [1:0]  temp_reg1;
reg  [33:0] temp_reg2;
reg  flagB,flagD;

assign InvMod_wraddr = temp_wraddr;
assign InvMod_rdaddr = temp_rdaddr;
assign InvMod_data   = temp_data;
assign InvMod_rden   = temp_rden;
assign InvMod_wren   = temp_wren;

parameter
			Idel = 7'd1,
			start= 7'd2,
			read_m0 = 7'd3,
			read_m1 = 7'd4,
			rd_m_wr_u = 7'd5,
			wr_u_rd_a = 7'd6,
			rd_a_wr_v = 7'd7,
			wr_v = 7'd8,
			write_B0 = 7'd9,
			write_D_1 = 7'd10,
			write_D_0 = 7'd11,
			read_u0 = 7'd12,
			read_u1 = 7'd13,
			Judge_u0 = 7'd14,
			Div_u_1  = 7'd15,
			Div_u_0  = 7'd16,
			read_B0  = 7'd17,
			B_div_2  = 7'd18,
			B_div_1  = 7'd19,
			B_div_0  = 7'd20,
			B_minus_m_s0 = 7'd21,
			B_minus_m_s1 = 7'd22,
			B_minus_m_s2 = 7'd23,
			B_minus_m_s3 = 7'd24,
			B_minus_div_s0 = 7'd25,
			B_minus_div_s1 = 7'd26,
			
			read_v0 = 7'd27,
			read_v1 = 7'd28,
			Judge_v0 = 7'd29,
			Div_v_1  = 7'd30,
			Div_v_0  = 7'd31,
			read_D0  = 7'd32,
			D_div_2  = 7'd33,
			D_div_1  = 7'd34,
			D_div_0  = 7'd35,
			D_minus_a_s0 = 7'd36,
			D_minus_a_s1 = 7'd37,
			D_minus_a_s2 = 7'd38,
			D_minus_a_s3 = 7'd39,
			D_minus_div_s0 = 7'd40,
			D_minus_div_s1 = 7'd41,
			
			Judge_u_v_s0 = 7'd42,
			Judge_u_v_s1 = 7'd43,
			Judge_u_v_s2 = 7'd44,
			Judge_u_v_s3 = 7'd45,
			Judge_u_v_s4 = 7'd46,
			v_minus_u = 7'd47,
			u_minus_v = 7'd48,
			minus_uv_s0 = 7'd49,
			minus_uv_s1 = 7'd50,
			minus_uv_s2 = 7'd51,
			minus_uv_s3 = 7'd52,
			minus_uv_s4 = 7'd53,
			minus_BD_s0 = 7'd54,
			minus_BD_s1 = 7'd55,
			minus_BD_s2 = 7'd56,
			minus_BD_s3 = 7'd57,
			minus_BD_s4 = 7'd58,
			Get_Result = 7'd59,
			Judge_u0_0 = 7'd60, 
			Judge_u0_1 = 7'd61,
			Judge_u0_2 =  7'd62,
			Judge_u0_3 = 7'd63,
			done = 7'd64;
			
reg  [6:0]	cs;
reg  [4:0]  cnt;
reg  [9:0]  m_addr,a_addr,uvBD_addr,temp_addr;

always @ (posedge clk)
	if(!Rst_n)
		begin
			cs <= Idel;
			temp_wren <= 1'b0;
			temp_rden <= 1'b0;
		end 
	else
		case(cs)
			Idel:
				begin
					InvMod_valid <= 1'b0;
					InvMod_done  <= 1'b0;
					cnt <= 5'd0;
					if(InvMod_start == 1'b1)
						cs <= start;
					else
						cs <= Idel;
				end
			start:
				begin
					InvMod_valid <= 1'b1;
					m_addr     <= `m_base_addr;
					a_addr     <= InvMod_a_addr;
					uvBD_addr    <= `u_base_addr;
					flagB <= 1'b0;
					flagD <= 1'b0;
					cs <= read_m0;
				end
			read_m0:
				begin
					temp_rdaddr <= m_addr;
					temp_rden <= 1'b1;
					temp_wren <= 1'b0;
					m_addr <= m_addr + 1'b1;
					cs <= read_m1;
				end	
			read_m1:
				begin
					temp_rdaddr <= m_addr;
					m_addr <= m_addr + 1'b1;
					temp_rden <= 1'b1;
					temp_wren <= 1'b0;
					cs <= rd_m_wr_u;
				end
			rd_m_wr_u:
				begin
					temp_wren <= 1'b1;
					temp_rden <= 1'b1;
					temp_data <= InvMod_q;
					temp_wraddr <= uvBD_addr;
					uvBD_addr <= uvBD_addr + 1'b1;
					m_addr <= m_addr + 1'b1;
					temp_rdaddr <= m_addr;
					cnt <= cnt + 1'b1;
					if(cnt == 5'd29)
						begin
							cs <= wr_u_rd_a; 
						end
					else
						cs <= rd_m_wr_u;
				end
			wr_u_rd_a:
				begin
					temp_wren <= 1'b1;
					temp_rden <= 1'b1;
					temp_data <= InvMod_q;
					temp_wraddr <= uvBD_addr;
					temp_rdaddr <= a_addr;
					a_addr <= a_addr + 1'b1;
					uvBD_addr <= uvBD_addr + 1'b1;
					if(cnt == 5'd31)
						begin
							cnt <= 5'd0;
							cs <= rd_a_wr_v;
						end
					else
						begin
							cnt <= cnt + 1'b1;
							cs <= wr_u_rd_a;
						end
				end			
			rd_a_wr_v:
				begin
					temp_rden <= 1'b1;
					temp_wren <= 1'b1;
					temp_rdaddr <= a_addr;
					a_addr <= a_addr + 1'b1;
					temp_wraddr <= uvBD_addr;
					uvBD_addr <= uvBD_addr + 1'b1;
					temp_data <= InvMod_q;
					cnt <= cnt + 1'b1;
					if(cnt == 5'd29)
						cs <= wr_v;
					else
						cs <= rd_a_wr_v;
				end
			wr_v:
				begin
					temp_rden <= 1'b0;
					temp_wren <= 1'b1;
					temp_wraddr <= uvBD_addr;
					uvBD_addr <= uvBD_addr + 1'b1;
					temp_data <= InvMod_q;
					cnt <= cnt + 1'b1;
					if(cnt == 5'd31)
						begin
							cs <= write_B0;
							cnt <= 5'd0;
						end
					else
					 cs <= wr_v;
				end
			write_B0:
				begin
					temp_wren <= 1'b1;
					temp_rden <= 1'b0;
					temp_wraddr <= uvBD_addr;
					temp_data  <= 32'd0;
					uvBD_addr <= uvBD_addr + 1'b1;
					cnt <= cnt + 1'b1;
					if(cnt == 5'd31)
						begin
							cs <= write_D_1;
							cnt <= 5'd0; 
						end
					else
						cs <= write_B0;
				end
			write_D_1:
				begin
					temp_wren <= 1'b1;
					temp_wraddr <= uvBD_addr;
					uvBD_addr <= uvBD_addr + 1'b1;
					temp_data <= 32'd1;
					cnt <= cnt + 1'b1;
					cs <= write_D_0;
				end
			write_D_0:
				begin
					temp_wren <= 1'b1;
					temp_wraddr <= uvBD_addr;
					uvBD_addr <= uvBD_addr + 1'b1;
					temp_data <= 32'd0;
					cnt <= cnt + 1'b1;
					if(cnt == 5'd31)
						begin
							cnt <= 5'd0;
							cs <= read_u0;
						end
					else
						cs <= write_D_0;
				end
				
				//第一部分 read u
			read_u0:                                             
				begin
					cnt <= 5'd0;
					temp_rden <= 1'b1;
					temp_wren <= 1'b0;
					temp_rdaddr <=`u_base_addr;
					uvBD_addr <= `u_base_addr + 1'b1;
					cs <= read_u1;		
				end	
			read_u1:
				begin
					temp_rdaddr <= uvBD_addr;
					uvBD_addr <= uvBD_addr + 1'b1;
					cs <= Judge_u0;
				end
			Judge_u0:
				begin
					temp_reg[30:0] <= InvMod_q[31:1];
					temp_rdaddr <= uvBD_addr;
					uvBD_addr <= uvBD_addr + 1'b1;
					if(InvMod_q[0]==0)
						cs <= Div_u_1;
					else
						cs <= read_v0;						
				end
			Div_u_1:
				begin
					temp_rden <= 1'b1;
					temp_wren <= 1'b1;
					temp_rdaddr <= uvBD_addr;
					temp_wraddr <= uvBD_addr - 2'd3;
					uvBD_addr <= uvBD_addr + 1'b1;
					temp_data <= {InvMod_q[0],temp_reg[30:0]};
					temp_reg [30:0] <= InvMod_q[31:1];
					cnt <= cnt + 1'b1;
					if(cnt==5'd30)
						cs <= Div_u_0;
					else
						cs <= Div_u_1;
				end
			Div_u_0:                        
				begin
					temp_rden <= 1'b1;
					temp_wren <= 1'b1;
					temp_rdaddr <= `B_base_addr;   //read B0
					temp_wraddr <= uvBD_addr - 2'd3;
					uvBD_addr <= `B_base_addr + 1'b1;
					temp_data <= {temp_reg[30],temp_reg[30:0]};
					cs <= read_B0;
				end
			read_B0:                         //start from here
				begin
				if(InvMod_q[0]==1'b0)
					begin
					cnt <= 1'b0;
					temp_wren <= 1'b0;
					temp_rden <= 1'b1;
					temp_rdaddr <= uvBD_addr; //read_B1
					uvBD_addr <= uvBD_addr + 1'b1;
						cs <= B_div_2;
					end
				else
					begin
						temp_wren <= 1'b0;
						temp_rden <= 1'b1;
						temp_rdaddr <= `m_base_addr;
						m_addr <= `m_base_addr + 1'b1;
						cs <= B_minus_m_s0;
					end
				end
			B_div_2:
				begin
					temp_wren <= 1'b0;
					temp_rden <= 1'b1;
					temp_rdaddr <= uvBD_addr; //read_B2
					uvBD_addr <= uvBD_addr + 1'b1;
					temp_reg[30:0] <= InvMod_q[31:1];
					cs <= B_div_1;
				end
			B_div_1:
				begin
					temp_rden <= 1'b1;
					temp_wren <= 1'b1;
					temp_rdaddr <= uvBD_addr;
					uvBD_addr <= uvBD_addr + 1'b1;
					temp_wraddr <= uvBD_addr - 2'd3;
					temp_data <= {InvMod_q[0],temp_reg[30:0]};
					temp_reg[30:0] <= InvMod_q[31:1];
					cnt <= cnt + 1'b1;
					if(cnt == 5'd28)
						cs <= B_div_0;
					else
						cs <= B_div_1;
				end
			B_div_0:
				begin
					temp_rden <= 1'b0;
					temp_wren <= 1'b1;
					temp_data <= {temp_reg[30],temp_reg[30:0]};
					temp_wraddr <= uvBD_addr - 2'd3;
					uvBD_addr <= uvBD_addr + 1'b1;
					cnt <= cnt + 1'b1;
					if(cnt == 5'd31)
						cs <= read_u0;
					else
						cs <= B_div_0;
					
				end
			B_minus_m_s0:
				begin
						uvBD_addr <= `B_base_addr + 1'b1;
						temp_rden <= 1'b1;
						temp_wren <= 1'b0;
						temp_rdaddr <= `B_base_addr;
						temp_reg1 <= 2'd1;                //read B0
						temp_addr <= `B_base_addr;
						cnt <= 5'd0;
						cs <= B_minus_m_s1;
				end
			B_minus_m_s1:
				begin
					temp_rden <= 1'b0;
					temp_wren <= 1'b0;	
					temp_reg <= ~InvMod_q;			
					cs <=  B_minus_m_s2;
				end
			B_minus_m_s2:
				begin
					if(cnt == 5'd31)
						begin
							temp_rden <= 1'b1;
							temp_rdaddr <= `B_base_addr;
							uvBD_addr <= `B_base_addr + 1'b1; //read B0				
							cs <= B_minus_div_s0;
						end
					else
						begin
							temp_rden <= 1'b1;		
							temp_wren <= 1'b1;       
							temp_reg2 <=  temp_reg + temp_reg1 + InvMod_q;    //write get B0
							temp_data <=  temp_reg + temp_reg1 + InvMod_q;
							temp_rdaddr <= m_addr;
							m_addr <= m_addr + 1'b1;
							temp_wraddr <= temp_addr;
							temp_addr <= temp_addr + 1'b1;         //read mi
							cs <= B_minus_m_s3;
						end
				end
			B_minus_m_s3:
				begin	
					temp_rden <= 1'b1;
					temp_wren <= 1'b0;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧洲av一区二区嗯嗯嗯啊| 日本视频免费一区| 国产一区二区毛片| 国产精品久久久久精k8| 欧美日韩成人激情| av不卡免费在线观看| 亚州成人在线电影| 欧美日韩国产欧美日美国产精品| 久久亚洲精品国产精品紫薇| 蜜桃一区二区三区在线观看| 亚洲午夜精品一区二区三区他趣| 韩日欧美一区二区三区| 99精品视频一区二区三区| 国产清纯白嫩初高生在线观看91 | 在线日韩av片| 欧美日韩成人综合在线一区二区| 中文字幕一区二区三区在线不卡| 捆绑紧缚一区二区三区视频| 欧美在线视频日韩| 中文幕一区二区三区久久蜜桃| 亚洲福利视频一区二区| 91麻豆精品国产91久久久资源速度| 亚洲夂夂婷婷色拍ww47| 欧美日韩高清在线| 国产伦精品一区二区三区视频青涩 | 亚洲一区在线视频| 精彩视频一区二区| 亚洲综合在线五月| 精品国产一区二区在线观看| 久久久影院官网| 欧美成人a∨高清免费观看| 国产精品午夜在线观看| 国产精品久久久久久久久图文区 | 亚洲综合男人的天堂| 亚洲精品日产精品乱码不卡| 欧美激情一区二区三区| 精品国产一区二区三区不卡| 欧美专区亚洲专区| 91传媒视频在线播放| 在线欧美小视频| 欧美性一二三区| 色成人在线视频| 欧美疯狂做受xxxx富婆| 欧美日韩免费在线视频| 精品成人私密视频| 久久久精品天堂| 日韩免费观看2025年上映的电影| 97超碰欧美中文字幕| 色婷婷综合久久久中文字幕| 在线播放91灌醉迷j高跟美女 | 日韩精品一区二区三区在线观看 | 成人18视频在线播放| 国产在线日韩欧美| 欧美亚洲尤物久久| 国产色产综合产在线视频| 日本三级韩国三级欧美三级| 成人丝袜18视频在线观看| 亚洲精品在线免费播放| 日韩综合小视频| 91免费观看视频| 欧美久久免费观看| 日韩一级精品视频在线观看| 精品美女一区二区| 国产精品日韩精品欧美在线| 久久精品在线免费观看| 中文字幕一区在线观看| 亚洲一区在线观看视频| 久久99蜜桃精品| 国产一区二区三区国产| 在线亚洲一区观看| 欧美高清性hdvideosex| 日韩一区二区高清| 久久久精品人体av艺术| 亚洲少妇最新在线视频| 91免费视频网| 亚洲欧美自拍偷拍色图| 一区二区三区中文字幕电影| 亚洲美女屁股眼交| 国内成+人亚洲+欧美+综合在线| 在线免费不卡视频| 欧美日韩免费视频| 床上的激情91.| 久久精品二区亚洲w码| 日韩在线一区二区三区| 日韩极品在线观看| 在线看不卡av| 综合在线观看色| 欧美va天堂va视频va在线| 亚洲激情图片一区| 精品国产免费视频| 国产福利一区二区三区视频| 有码一区二区三区| 欧美精品在线观看播放| 成人精品小蝌蚪| 日本不卡视频在线观看| 中文字幕亚洲成人| 欧美电视剧免费观看| 一本大道久久精品懂色aⅴ | 色婷婷香蕉在线一区二区| 国产亚洲欧美一级| 北条麻妃一区二区三区| 一区二区三区不卡在线观看 | 国产aⅴ综合色| 欧美日韩极品在线观看一区| 蜜臂av日日欢夜夜爽一区| 欧美大肚乱孕交hd孕妇| 狠狠色丁香婷婷综合久久片| 91精品免费观看| 秋霞电影网一区二区| 日韩欧美国产电影| 国产精品99久久久久久宅男| 午夜精品久久久久久久99樱桃| 国产精品亚洲一区二区三区妖精| 欧美绝品在线观看成人午夜影视| ww亚洲ww在线观看国产| 国模大尺度一区二区三区| 日韩欧美一级在线播放| 欧美激情中文字幕| 欧美日韩在线综合| 国产老女人精品毛片久久| 亚洲免费毛片网站| 国产精品嫩草影院av蜜臀| 欧美日韩国产乱码电影| 欧美色综合影院| 欧美三级电影在线观看| 精品视频一区二区不卡| 欧美男人的天堂一二区| ww亚洲ww在线观看国产| 国产精品欧美极品| 国产欧美一区视频| 亚洲码国产岛国毛片在线| 亚洲在线视频一区| 精品综合免费视频观看| 国产毛片精品视频| 日韩电影在线观看电影| 最近中文字幕一区二区三区| 欧美性大战久久久| 99精品黄色片免费大全| 国产成人精品亚洲午夜麻豆| 美脚の诱脚舐め脚责91| 国模无码大尺度一区二区三区| 亚洲成a人在线观看| 亚洲日本一区二区三区| 国产精品久久久久久妇女6080| 日韩精品一区二区三区在线 | 成人免费黄色大片| 国产专区综合网| 一区二区三区四区国产精品| 2014亚洲片线观看视频免费| 亚洲欧美一区二区三区国产精品| 国产精品久久久久久福利一牛影视| 91网站在线播放| 日韩电影在线观看电影| 久久久亚洲国产美女国产盗摄| 欧美日韩在线电影| 99国产精品一区| 欧美日韩精品久久久| 在线免费观看日本欧美| 在线国产电影不卡| 国产高清成人在线| 成人综合在线视频| 亚洲第一成年网| 亚洲高清三级视频| 亚洲人成网站影音先锋播放| 国产精品国产a| 亚洲成年人网站在线观看| 久久精工是国产品牌吗| 成人激情开心网| 日韩欧美123| 麻豆国产精品官网| 欧美videofree性高清杂交| 一区二区三区.www| 欧美影院精品一区| 一区二区三区日本| 欧美日韩国产综合一区二区| 日韩毛片高清在线播放| 91在线高清观看| 亚洲国产成人av好男人在线观看| 欧美性做爰猛烈叫床潮| 午夜视频一区二区三区| 欧美一区二区人人喊爽| 亚洲成人av一区二区三区| aaa国产一区| 日韩一区二区三区电影| 亚洲男人的天堂在线aⅴ视频| 国产成人综合在线播放| 欧美日韩电影在线播放| 亚洲乱码中文字幕| 国产一区二区在线视频| 91精品午夜视频| 国产精品福利一区| 不卡的电影网站| 精品国产伦理网| 国产馆精品极品| 久久久久久久精| 久久国产精品色| 久久蜜桃香蕉精品一区二区三区| 午夜免费久久看| 欧美丝袜丝交足nylons| 国产精品久久久久久福利一牛影视 |