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

📄 opensparc ddr2 controller rtl files.v

📁 基于FPGA的DDR2控制程序
💻 V
📖 第 1 页 / 共 5 页
字号:
                        que_b0_index3_en = 1'h1;
                        que_b0_index2_en = 1'h1;
                        que_b0_index1_en = 1'h1;
                        que_b0_index0_en = 1'h1;
                        que_b0_index5_val_in = que_b0_index_ent4[6];
                        que_b0_index4_val_in = que_b0_index_ent3[6];
                        que_b0_index3_val_in = que_b0_index_ent2[6];
                        que_b0_index2_val_in = que_b0_index_ent1[6];
                        que_b0_index1_val_in = que_b0_index_ent0[6];
                        que_b0_index0_val_in = 1'h1;
                end     
        end
	else if(~que_scrb_picked_d1 & (~que_b0_wr_index_pend_d1 & que_b0_rd_picked_d1) & 
			que_this_channel_picked_d1 & (|que_ras_picked_d1) &
                        (que_b0_indx4_val_d1[7:0] == que_ras_picked_d1[7:0] |
			(~que_rd_ras_picked_d2 | que_b0_index_en_d1 & que_rd_ras_picked_d2) &
			 que_b0_index4_en_d1 & (que_b0_indx3_val_d1 == que_ras_picked_d1)))
        begin
                que_b0_index4_en = 1'h1;
                que_b0_index4_val_in = 1'h0;
                if(que_b0_index_en) 
                begin
                        que_b0_index4_en = 1'h1;
                        que_b0_index3_en = 1'h1;
                        que_b0_index2_en = 1'h1;
                        que_b0_index1_en = 1'h1;
                        que_b0_index0_en = 1'h1;
                        que_b0_index4_val_in = que_b0_index_ent3[6];
                        que_b0_index3_val_in = que_b0_index_ent2[6];
                        que_b0_index2_val_in = que_b0_index_ent1[6];
                        que_b0_index1_val_in = que_b0_index_ent0[6];
                        que_b0_index0_val_in = 1'h1;
                end     
        end
	else if(~que_scrb_picked_d1 & (~que_b0_wr_index_pend_d1 & que_b0_rd_picked_d1) & 
			que_this_channel_picked_d1 & (|que_ras_picked_d1) &
			(que_b0_indx3_val_d1[7:0] == que_ras_picked_d1[7:0] |
			(~que_rd_ras_picked_d2 | que_b0_index_en_d1 & que_rd_ras_picked_d2) &
			 que_b0_index3_en_d1 & (que_b0_indx2_val_d1 == que_ras_picked_d1)))
	begin
		que_b0_index3_en = 1'h1;
		que_b0_index3_val_in = 1'h0;
		if(que_b0_index_en) 
		begin
			que_b0_index3_en = 1'h1;
			que_b0_index2_en = 1'h1;
			que_b0_index1_en = 1'h1;
			que_b0_index0_en = 1'h1;
                        que_b0_index3_val_in = que_b0_index_ent2[6];
                        que_b0_index2_val_in = que_b0_index_ent1[6];
                        que_b0_index1_val_in = que_b0_index_ent0[6];
                        que_b0_index0_val_in = 1'h1;
		end
	end
	else if(~que_scrb_picked_d1 & (~que_b0_wr_index_pend_d1 & que_b0_rd_picked_d1) & 
			que_this_channel_picked_d1 & (|que_ras_picked_d1) &
			(que_b0_indx2_val_d1[7:0] == que_ras_picked_d1[7:0] |
			(~que_rd_ras_picked_d2 | que_b0_index_en_d1 & que_rd_ras_picked_d2) &
			 que_b0_index2_en_d1 & (que_b0_indx1_val_d1 == que_ras_picked_d1)))
        begin
		que_b0_index2_en = 1'h1;
		que_b0_index2_val_in = 1'h0;
		if(que_b0_index_en) 
		begin
			que_b0_index2_en = 1'h1;
			que_b0_index1_en = 1'h1;
			que_b0_index0_en = 1'h1;
                        que_b0_index2_val_in = que_b0_index_ent1[6];
                        que_b0_index1_val_in = que_b0_index_ent0[6];
                        que_b0_index0_val_in = 1'h1;
		end
        end
	else if(~que_scrb_picked_d1 & (~que_b0_wr_index_pend_d1 & que_b0_rd_picked_d1) & 
			que_this_channel_picked_d1 & (|que_ras_picked_d1) &
			(que_b0_indx1_val_d1[7:0] == que_ras_picked_d1[7:0] |
			(~que_rd_ras_picked_d2 | que_b0_index_en_d1 & que_rd_ras_picked_d2) &
			 que_b0_index1_en_d1 & (que_b0_indx0_val_d1 == que_ras_picked_d1)))
        begin
		que_b0_index1_en = 1'h1;
		que_b0_index1_val_in = 1'h0;
		if(que_b0_index_en) 
		begin
			que_b0_index1_en = 1'h1;
			que_b0_index0_en = 1'h1;
                        que_b0_index1_val_in = que_b0_index_ent0[6];
                        que_b0_index0_val_in = 1'h1;
		end
        end
	else if(~que_scrb_picked_d1 & (~que_b0_wr_index_pend_d1 & que_b0_rd_picked_d1) & 
			que_this_channel_picked_d1 & (|que_ras_picked_d1) &
			(que_b0_indx0_val_d1[7:0] == que_ras_picked_d1[7:0])) 
        begin
		que_b0_index0_en = 1'h1;
		que_b0_index0_val_in = 1'h0;
		if(que_b0_index_en) 
		begin
			que_b0_index0_en = 1'h1;
                        que_b0_index0_val_in = 1'h1;
		end
        end
	else if(que_b0_index_en) 
	begin
		if(~que_b0_index_ent7[6])
                begin
                        que_b0_index7_en = 1'h1;
                        que_b0_index6_en = 1'h1;
                        que_b0_index5_en = 1'h1;
                        que_b0_index4_en = 1'h1;
                        que_b0_index3_en = 1'h1;
                        que_b0_index2_en = 1'h1;
                        que_b0_index1_en = 1'h1;
                        que_b0_index0_en = 1'h1;
                        que_b0_index7_val_in = que_b0_index_ent6[6];
                        que_b0_index6_val_in = que_b0_index_ent5[6];
                        que_b0_index5_val_in = que_b0_index_ent4[6];
                        que_b0_index4_val_in = que_b0_index_ent3[6];
                        que_b0_index3_val_in = que_b0_index_ent2[6];
                        que_b0_index2_val_in = que_b0_index_ent1[6];
                        que_b0_index1_val_in = que_b0_index_ent0[6];
                        que_b0_index0_val_in = 1'h1;
                end
		if(~que_b0_index_ent6[6])
                begin
                        que_b0_index6_en = 1'h1;
                        que_b0_index5_en = 1'h1;
                        que_b0_index4_en = 1'h1;
                        que_b0_index3_en = 1'h1;
                        que_b0_index2_en = 1'h1;
                        que_b0_index1_en = 1'h1;
                        que_b0_index0_en = 1'h1;
                        que_b0_index6_val_in = que_b0_index_ent5[6];
                        que_b0_index5_val_in = que_b0_index_ent4[6];
                        que_b0_index4_val_in = que_b0_index_ent3[6];
                        que_b0_index3_val_in = que_b0_index_ent2[6];
                        que_b0_index2_val_in = que_b0_index_ent1[6];
                        que_b0_index1_val_in = que_b0_index_ent0[6];
                        que_b0_index0_val_in = 1'h1;
                end
		if(~que_b0_index_ent5[6])
                begin
                        que_b0_index5_en = 1'h1;
                        que_b0_index4_en = 1'h1;
                        que_b0_index3_en = 1'h1;
                        que_b0_index2_en = 1'h1;
                        que_b0_index1_en = 1'h1;
                        que_b0_index0_en = 1'h1;
                        que_b0_index5_val_in = que_b0_index_ent4[6];
                        que_b0_index4_val_in = que_b0_index_ent3[6];
                        que_b0_index3_val_in = que_b0_index_ent2[6];
                        que_b0_index2_val_in = que_b0_index_ent1[6];
                        que_b0_index1_val_in = que_b0_index_ent0[6];
                        que_b0_index0_val_in = 1'h1;
                end
		if(~que_b0_index_ent4[6])
                begin
                        que_b0_index4_en = 1'h1;
                        que_b0_index3_en = 1'h1;
                        que_b0_index2_en = 1'h1;
                        que_b0_index1_en = 1'h1;
                        que_b0_index0_en = 1'h1;
                        que_b0_index4_val_in = que_b0_index_ent3[6];
                        que_b0_index3_val_in = que_b0_index_ent2[6];
                        que_b0_index2_val_in = que_b0_index_ent1[6];
                        que_b0_index1_val_in = que_b0_index_ent0[6];
                        que_b0_index0_val_in = 1'h1;
                end
		if(~que_b0_index_ent3[6]) 
		begin
			que_b0_index3_en = 1'h1;
			que_b0_index2_en = 1'h1;
			que_b0_index1_en = 1'h1;
			que_b0_index0_en = 1'h1;
                        que_b0_index3_val_in = que_b0_index_ent2[6];
                        que_b0_index2_val_in = que_b0_index_ent1[6];
                        que_b0_index1_val_in = que_b0_index_ent0[6];
                        que_b0_index0_val_in = 1'h1;
		end
		if(~que_b0_index_ent2[6]) 
		begin
			que_b0_index2_en = 1'h1;
			que_b0_index1_en = 1'h1;
			que_b0_index0_en = 1'h1;
                        que_b0_index2_val_in = que_b0_index_ent1[6];
                        que_b0_index1_val_in = que_b0_index_ent0[6];
                        que_b0_index0_val_in = 1'h1;
		end
		if(~que_b0_index_ent1[6]) 
		begin
			que_b0_index1_en = 1'h1;
			que_b0_index0_en = 1'h1;
                        que_b0_index1_val_in = que_b0_index_ent0[6];
                        que_b0_index0_val_in = 1'h1;
		end
		if(~que_b0_index_ent0[6]) 
		begin
			que_b0_index0_en = 1'h1;
                        que_b0_index0_val_in = 1'h1;
		end
			
	end
end

dffrle_ns #(1) b0_collapse_fifo_ent0_val(
        .din(que_b0_index0_val_in),
        .q(que_b0_index_ent0[6]),
	.rst_l(rst_l),
        .en(que_b0_index0_en),
        .clk(clk));

dffrle_ns #(1) b0_collapse_fifo_ent1_val(
        .din(que_b0_index1_val_in),
        .q(que_b0_index_ent1[6]),
	.rst_l(rst_l),
        .en(que_b0_index1_en),
        .clk(clk));

dffrle_ns #(1) b0_collapse_fifo_ent2_val(
        .din(que_b0_index2_val_in),
        .q(que_b0_index_ent2[6]),
	.rst_l(rst_l),
        .en(que_b0_index2_en),
        .clk(clk));

dffrle_ns #(1) b0_collapse_fifo_ent3_val(
        .din(que_b0_index3_val_in),
        .q(que_b0_index_ent3[6]),
	.rst_l(rst_l),
        .en(que_b0_index3_en),
        .clk(clk));

dffrle_ns #(1) b0_collapse_fifo_ent4_val(
        .din(que_b0_index4_val_in),
        .q(que_b0_index_ent4[6]),
        .rst_l(rst_l),
        .en(que_b0_index4_en),
        .clk(clk));

dffrle_ns #(1) b0_collapse_fifo_ent5_val(
        .din(que_b0_index5_val_in),
        .q(que_b0_index_ent5[6]),
        .rst_l(rst_l),
        .en(que_b0_index5_en),
        .clk(clk));

dffrle_ns #(1) b0_collapse_fifo_ent6_val(
        .din(que_b0_index6_val_in),
        .q(que_b0_index_ent6[6]),
        .rst_l(rst_l),
        .en(que_b0_index6_en),
        .clk(clk));

dffrle_ns #(1) b0_collapse_fifo_ent7_val(
        .din(que_b0_index7_val_in),
        .q(que_b0_index_ent7[6]),
        .rst_l(rst_l),
        .en(que_b0_index7_en),
        .clk(clk));

dffrle_ns #(8) b0_collapse_fifo_ent0(
        .din(que_b0_rd_index[7:0]),
        .q({que_b0_index_ent0[8:7], que_b0_index_ent0[5:0]}),
        .rst_l(rst_l),
        .en(que_b0_index0_en),
        .clk(clk));

dffrle_ns #(8) b0_collapse_fifo_ent1(
        .din({que_b0_index_ent0[8:7], que_b0_index_ent0[5:0]}),
        .q({que_b0_index_ent1[8:7], que_b0_index_ent1[5:0]}),
        .rst_l(rst_l),
        .en(que_b0_index1_en),
        .clk(clk));

dffrle_ns #(8) b0_collapse_fifo_ent2(
        .din({que_b0_index_ent1[8:7], que_b0_index_ent1[5:0]}),
        .q({que_b0_index_ent2[8:7], que_b0_index_ent2[5:0]}),
        .rst_l(rst_l),
        .en(que_b0_index2_en),
        .clk(clk));

dffrle_ns #(8) b0_collapse_fifo_ent3(
        .din({que_b0_index_ent2[8:7], que_b0_index_ent2[5:0]}),
        .q({que_b0_index_ent3[8:7], que_b0_index_ent3[5:0]}),
        .rst_l(rst_l),
        .en(que_b0_index3_en),
        .clk(clk));

dffrle_ns #(8) b0_collapse_fifo_ent4(
        .din({que_b0_index_ent3[8:7], que_b0_index_ent3[5:0]}),
        .q({que_b0_index_ent4[8:7], que_b0_index_ent4[5:0]}),
        .rst_l(rst_l),
        .en(que_b0_index4_en),
        .clk(clk));

dffrle_ns #(8) b0_collapse_fifo_ent5(
        .din({que_b0_index_ent4[8:7], que_b0_index_ent4[5:0]}),
        .q({que_b0_index_ent5[8:7], que_b0_index_ent5[5:0]}),
        .rst_l(rst_l),
        .en(que_b0_index5_en),
        .clk(clk));

dffrle_ns #(8) b0_collapse_fifo_ent6(
        .din({que_b0_index_ent5[8:7], que_b0_index_ent5[5:0]}),
        .q({que_b0_index_ent6[8:7], que_b0_index_ent6[5:0]}),
        .rst_l(rst_l),
        .en(que_b0_index6_en),
        .clk(clk));

dffrle_ns #(8) b0_collapse_fifo_ent7(
        .din({que_b0_index_ent6[8:7], que_b0_index_ent6[5:0]}),
        .q({que_b0_index_ent7[8:7], que_b0_index_ent7[5:0]}),
        .rst_l(rst_l),
        .en(que_b0_index7_en),
        .clk(clk));

dff_ns #(2)     ff_rd_index0_en(
        .din({que_b0_index1_en, que_b0_index2_en}),
        .q({que_b0_index1_en_d1, que_b0_index2_en_d1}),
        .clk(clk));

dff_ns #(3)     ff_rd_index3_en(
        .din({que_b0_index3_en, que_b0_index4_en, que_b0_index5_en}),
        .q({que_b0_index3_en_d1, que_b0_index4_en_d1, que_b0_index5_en_d1}),
        .clk(clk));

dff_ns #(2)     ff_rd_index6_en(
        .din({que_b0_index6_en, que_b0_index7_en}),
        .q({que_b0_index6_en_d1, que_b0_index7_en_d1}),
        .clk(clk));

////////////////
// Collapsing FIFO for WRITES
////////////////

assign que_b0_wrq_full =  writeqbank0vld7 & writeqbank0vld6 & writeqbank0vld5 & writeqbank0vld4 &
			writeqbank0vld3 & writeqbank0vld2 & writeqbank0vld1 & writeqbank0vld0;
assign que_b0_wr_index[7:0] = {que_wr_addr0[35], que_wr_addr0[33], que_wr_addr_b0[2:0], que_wr_addr0[2:0]};

// set and reset the valids in this queue
assign que_b0_wr_index_en = que_wr_req & ~que_wr_addr0[32] & ~que_b0_wrq_full; 

// Stage these so that reset happens 1 cycle later then the request got picked
dff_ns  #(1) ff_wr_index_en (
        .din    (que_b0_wr_picked),
        .q    	(que_b0_wr_picked_d1),
        .clk    (clk));

wire que_wr_ras_picked_d1 = ~que_scrb_picked_d1 &                                                
                        (que_b0_wr_index_pend_d1 | ~que_b0_rd_picked_d1 & que_b0_wr_picked_d1) &
                        que_this_channel_picked_d1 & (|que_ras_picked_d1);

dff_ns  #(2) 	wr_ras_picked_d2 (
        .din    ({que_b0_wr_index_en, que_wr_ras_picked_d1}),
        .q      ({que_b0_wr_index_en_d1, que_wr_ras_picked_d2}),
        .clk    (clk));

always @(/*AUTOSENSE*/que_b0_rd_picked_d1 or que_b0_wr_index1_en_d1
	 or que_b0_wr_index2_en_d1 or que_b0_wr_index3_en_d1
	 or que_b0_wr_index4_en_d1 or que_b0_wr_index5_en_d1
	 or que_b0_wr_index6_en_d1 or que_b0_wr_index7_en_d1
	 or que_b0_wr_index_en or que_b0_wr_index_ent0
	 or que_b0_wr_index_ent1 or que_b0_wr_index_ent2
	 or que_b0_wr_index_ent3 or que_b0_wr_index_ent4
	 or que_b0_wr_index_ent5 or que_b0_wr_index_ent6
	 or que_b0_wr_index_ent7 or que_b0_wr_index_pend_d1
	 or que_b0_wr_indx

⌨️ 快捷键说明

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