インテル® Quartus® Primeプロ・エディションのユーザーガイド: デザイン上の推奨事項

ID 683082
日付 4/13/2020
Public

このドキュメントの新しいバージョンが利用できます。お客様は次のことを行ってください。 こちらをクリック 最新バージョンに移行する。

ドキュメント目次

1.4.3.1. シンプル・シフト・レジスター

このセクションの例は、単純なシングルビット幅の69ビット長のシフトレジスターを示しています。

インテル® Quartus® Prime合成は、サポートされるデバイスのALTSHIFT_TAPS IPコアにレジスター( W = 1およびM = 69 )を実装し、専用のRAMブロックまたはMLABメモリーに配置されるサポートされるデバイスのRAMにマップします。レジスターの長さが69ビット未満の場合、 インテル® Quartus® Prime合成では、シフトレジスターをロジックに実装します。

Verilog HDLシングル・ビット幅、69 ビット長シフトレジスター

module shift_1x69 (clk, shift, sr_in, sr_out);
	input clk, shift;
	input sr_in;
	output sr_out;

	reg [68:0] sr;

	always @ (posedge clk)
	begin
		if (shift == 1'b1)
		begin
			sr[68:1] <= sr[67:0];
			sr[0] <= sr_in;
		end
	end
	sr_out <= sr(68);
endmodule

Verilog HDLシングル・ビット幅、69 ビット長シフトレジスター

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.all;
ENTITY shift_1x69 IS
	PORT (
		clk: IN STD_LOGIC;
		shift: IN STD_LOGIC;
		sr_in: IN STD_LOGIC;
		sr_out: OUT STD_LOGIC
	);
END shift_1x69;

ARCHITECTURE arch OF shift_1x69 IS
	TYPE sr_length IS ARRAY (68 DOWNTO 0) OF STD_LOGIC;
	SIGNAL sr: sr_length;
BEGIN
	PROCESS (clk)
		BEGIN
		IF (rising_edge(clk)) THEN
			IF (shift = '1') THEN
			sr(68 DOWNTO 1) <= sr(67 DOWNTO 0);
			sr(0) <= sr_in;
			END IF;
		END IF;
	END PROCESS;
	sr_out <= sr(65);
END arch;