JP6366103B2 - Semiconductor device and data output method - Google Patents

Semiconductor device and data output method Download PDF

Info

Publication number
JP6366103B2
JP6366103B2 JP2015011809A JP2015011809A JP6366103B2 JP 6366103 B2 JP6366103 B2 JP 6366103B2 JP 2015011809 A JP2015011809 A JP 2015011809A JP 2015011809 A JP2015011809 A JP 2015011809A JP 6366103 B2 JP6366103 B2 JP 6366103B2
Authority
JP
Japan
Prior art keywords
data
read
storage unit
write
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015011809A
Other languages
Japanese (ja)
Other versions
JP2016136366A (en
Inventor
良輔 南
良輔 南
次男 高橋
次男 高橋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Platforms Ltd
NEC Corp
Original Assignee
NEC Platforms Ltd
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Platforms Ltd, NEC Corp filed Critical NEC Platforms Ltd
Priority to JP2015011809A priority Critical patent/JP6366103B2/en
Publication of JP2016136366A publication Critical patent/JP2016136366A/en
Application granted granted Critical
Publication of JP6366103B2 publication Critical patent/JP6366103B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、半導体装置及びデータ出力方法に関する。特に、データを記憶する半導体装置及びそのデータ出力方法に関する。   The present invention relates to a semiconductor device and a data output method. In particular, the present invention relates to a semiconductor device that stores data and a data output method thereof.

近年、プログラミング可能なFPGA(Field-Programmable Gate Array)が様々な用途(アプリケーション)にて用いられている。大容量のRAM(Random Access Memory)ブロックが搭載された大規模なFPGAが市場に安定的に供給されており、このような最新のFPGAを内部に組み込んだ製品が数多く開発されている。   In recent years, programmable FPGAs (Field-Programmable Gate Arrays) have been used for various purposes (applications). Large-scale FPGAs equipped with a large-capacity RAM (Random Access Memory) block are stably supplied to the market, and many products incorporating such latest FPGAs have been developed.

また、通信技術の発展に伴い、ネットワークの通信容量の大容量化が著しい。このような環境の下、処理容量(処理能力)が100Gbpsに達する通信装置は既に実用化の段階にあり、より高速な装置(例えば、400bpsの処理容量)の開発が始まっている。さらに、より一層の通信品質向上を目的として、100Gbpsの処理能力を確保しつつ、より複雑な処理を行うことで、ユーザの独自要望に添ったきめ細かいサービスを提供する装置の開発が始動しつつある。   In addition, with the development of communication technology, the increase in network communication capacity is remarkable. Under such an environment, a communication device whose processing capacity (processing capacity) reaches 100 Gbps has already been put into practical use, and development of a higher speed device (for example, processing capacity of 400 bps) has started. In addition, with the aim of further improving communication quality, development of devices that provide detailed services that meet the user's unique requirements by performing more complex processing while ensuring 100 Gbps processing capability is being started. .

このようなユーザ独自の機能を実現するため、通信装置等に要求される機能をFPGAにて実現することが多い。例えば、通信容量を100Gbpsと仮定する。この場合、100Gbpsの処理容量を実現する通信装置内部の信号バス帯域は、「信号バスビット数×システムクロック周波数≧100Gbps」という条件を満たす必要がある。例えば、信号バスビット数とシステムクロック周波数の関係は、以下のような組み合わせが用いられる場合が多い。
640ビット×156.25MHz(=100.000Gbps)
512ビット×312.5MHz(=160.000Gbps)
320ビット×312.5MHz(=100.000Gbps)
In order to realize such user-specific functions, functions required for communication devices and the like are often realized by FPGA. For example, assume that the communication capacity is 100 Gbps. In this case, the signal bus band inside the communication apparatus realizing the processing capacity of 100 Gbps needs to satisfy the condition “number of signal bus bits × system clock frequency ≧ 100 Gbps”. For example, the following combinations are often used for the relationship between the number of signal bus bits and the system clock frequency.
640 bits x 156.25 MHz (= 100.000 Gbps)
512 bits x 312.5 MHz (= 160.000 Gbps)
320 bits x 312.5 MHz (= 100.000 Gbps)

特に、イーサネット(登録商標;以下同じ)等の可変長パケットを扱う通信装置は、その内部のチップ間通信プロトコルとして、信号帯域に余裕があるインターラーケン(Interlaken)インターフェース(512ビット×312.5MHz=160.000Gbps)を標準的に用いることが多い。   In particular, a communication apparatus that handles variable-length packets such as Ethernet (registered trademark; the same shall apply hereinafter) has an interlaken interface (512 bits × 312.5 MHz = 160) having a sufficient signal bandwidth as an internal chip communication protocol. .000 Gbps) is often used as standard.

特許文献1には、リードモディファイライト動作を高速に行なうことが可能な演算システムを提供する、と記載されている。リードモディファイライト動作とは、指定されたアドレスのデータを読み出し、当該読み出したデータの指定ビットを加工し、加工されたデータを元のアドレスに書き戻す動作である。特許文献1が開示する技術では、ALU(Arithmetic Logic Unit)が、データを複数部分に分けて演算を行い、複数部分のデータに対応するバンク0、バンク1のメモリを用意する。その上で、バンク0がALUの演算結果を書き込んでいる際に、バンク1のデータ読み出しが行われる。   Patent Document 1 describes that an arithmetic system capable of performing a read-modify-write operation at high speed is provided. The read modify write operation is an operation of reading data at a specified address, processing a specified bit of the read data, and writing the processed data back to the original address. In the technology disclosed in Patent Document 1, an ALU (Arithmetic Logic Unit) performs calculation by dividing data into a plurality of parts, and prepares memories in banks 0 and 1 corresponding to the data of the plurality of parts. In addition, when the bank 0 is writing the calculation result of the ALU, the data reading of the bank 1 is performed.

特開2006−293538号公報JP 2006-293538 A

なお、上記先行技術文献の開示を、本書に引用をもって繰り込むものとする。以下の分析は、本発明者らによってなされたものである。   The disclosure of the above prior art document is incorporated herein by reference. The following analysis was made by the present inventors.

通信装置内部のチップ間通信プロトコルに、インターラーケンインターフェース(512ビットパラレル)が採用され、通信装置内部の各モジュール(例えば、FPGAを用いて実装された演算モジュール)が、1つのパケットを処理するのに許容される時間を考察する。イーサネット上の最小フレームサイズは、64バイト(64×8=512ビット)と規定されている。従って、インターラーケンインターフェースを採用し、パケットの授受を行うFPGA等は、64バイトのパケット(1パケット)を1クロックにて処理する必要がある。上記の例では、1パケット(64バイト)を処理するのに2クロック要したのでは、処理容量は80Gbpsとなり必要な処理容量を確保できないためである。   An interlaken interface (512-bit parallel) is adopted as a communication protocol between chips in the communication device, and each module (for example, an arithmetic module implemented using FPGA) in the communication device processes one packet. Consider the time allowed. The minimum frame size on Ethernet is defined as 64 bytes (64 × 8 = 512 bits). Therefore, an FPGA or the like that employs an interlaken interface and transmits / receives a packet needs to process a 64-byte packet (one packet) in one clock. In the above example, if two clocks are required to process one packet (64 bytes), the processing capacity is 80 Gbps, and the necessary processing capacity cannot be secured.

このように、通信装置等に実装されたFPGAは、大容量のデータを高速に処理することが望まれ、1つのパケットを処理するのに許容されるクロック数は1である。以下、1つのパケットを処理するのに許容されるクロック数が1という前提条件の下、FPGAに生じる問題を具体的に説明する。その際、図22に示すパケットモニタ回路を例に取り、問題点を説明する。パケットモニタ回路とは、通信装置が受信したパケット数を積算カウントする回路である。   As described above, an FPGA mounted on a communication device or the like is desired to process a large amount of data at high speed, and the number of clocks allowed to process one packet is one. Hereinafter, a problem that occurs in the FPGA will be specifically described under the premise that the number of clocks allowed to process one packet is one. At that time, the problem will be described by taking the packet monitor circuit shown in FIG. 22 as an example. The packet monitor circuit is a circuit that counts the number of packets received by the communication device.

パケットに複数のグループに振り分けられ、グループ単位にてパケットを積算カウントするための回路が図22に示されるパケットモニタ回路である。また、各グループのパケットはランダムに入力され、同一のグループに属するパケットが連続して入力される場合も存在する。図22において、パケットは、グループごとに用意された積算カウント回路80−1〜80−n(nは正の整数、以下同じ)と、グループ選択回路81と、に入力される。   A packet monitor circuit shown in FIG. 22 is a circuit that distributes packets into a plurality of groups and counts the packets in groups. In addition, packets of each group are randomly input, and there are cases where packets belonging to the same group are continuously input. In FIG. 22, a packet is input to an integration count circuit 80-1 to 80-n (n is a positive integer, the same applies hereinafter) and a group selection circuit 81 prepared for each group.

積算カウント回路80−1〜80−nのそれぞれは、演算部82と、フリップフロップ(FF;Flip-Flop)83と、を備える。各演算部82は、対応するグループのパケットが入力されると、フリップフロップ83から読み出した値(積算パケット数)に1を加算し、その結果をフリップフロップ83に出力する。グループ選択回路81は、パケットのヘッダに格納されたアドレスに応じて、いずれのグループに対応する積算カウント回路80−1〜80−nを有効にするか決定し、対応するイネーブル信号GRP_ENを活性化する(アクティブとする)。自回路に対応し、且つ、活性化したイネーブル信号GRP_ENを受け取った積算カウント回路80のフリップフロップ83は、演算部82が出力するデータを、選択回路84に出力する。また、グループ選択回路81は、パケットに含まれるアドレスに応じて、選択回路84にグループ選択信号GRP_SELを出力する。選択回路84は、グループ選択信号GRP_SELに応じて、外部に出力するデータを選択する。   Each of the integration count circuits 80-1 to 80-n includes a calculation unit 82 and a flip-flop (FF) 83. Each arithmetic unit 82, when a corresponding group of packets is input, adds 1 to the value read from the flip-flop 83 (the total number of packets) and outputs the result to the flip-flop 83. The group selection circuit 81 determines, depending on the address stored in the header of the packet, which of the group count circuits 80-1 to 80-n is to be enabled, and activates the corresponding enable signal GRP_EN. Yes (set as active). The flip-flop 83 of the integration count circuit 80 that corresponds to its own circuit and receives the activated enable signal GRP_EN outputs the data output from the calculation unit 82 to the selection circuit 84. The group selection circuit 81 outputs a group selection signal GRP_SEL to the selection circuit 84 in accordance with the address included in the packet. The selection circuit 84 selects data to be output to the outside according to the group selection signal GRP_SEL.

例えば、積算カウント回路80−1はグループ1(GRP1)に割り当てられているとする。パケットモニタ回路にグループ1に割り当てられたアドレスを含むパケットが入力されると、積算カウント回路80−1の演算部82は、フリップフロップ83が出力する積算カウント値(OLD_DATA)に1を加算する。演算部82は、加算結果をフリップフロップ83に出力する。次に、パケットモニタ回路に入力されるシステムクロック(図示せず)が1クロック進むと、グループ選択回路81は、積算カウント回路80−1に対応するイネーブル信号GRP_ENとグループ選択信号GRP_SELをアクティブにする。イネーブル信号GRP_ENがアクティブとなることで、積算カウント回路80−1のフリップフロップ83は、1クロック前に演算部82が出力するデータをデータ出力端子から出力する。グループ選択信号GRP_SELにより選択回路84のポート1に供給されたデータ(積算カウント回路80−1の出力)が選択され、パケットモニタ回路の出力となる。   For example, it is assumed that the integration count circuit 80-1 is assigned to the group 1 (GRP1). When a packet including an address assigned to group 1 is input to the packet monitor circuit, the operation unit 82 of the integration count circuit 80-1 adds 1 to the integration count value (OLD_DATA) output from the flip-flop 83. The calculation unit 82 outputs the addition result to the flip-flop 83. Next, when a system clock (not shown) input to the packet monitor circuit advances by one clock, the group selection circuit 81 activates the enable signal GRP_EN and the group selection signal GRP_SEL corresponding to the integration count circuit 80-1. . When the enable signal GRP_EN becomes active, the flip-flop 83 of the integration count circuit 80-1 outputs the data output from the arithmetic unit 82 one clock before from the data output terminal. Data supplied to the port 1 of the selection circuit 84 (output of the integration count circuit 80-1) is selected by the group selection signal GRP_SEL and becomes the output of the packet monitor circuit.

以上のように、図22に示す構成により受信パケットの積算カウントが可能となる。しかし、図22に示す回路構成には、受信パケットを振り分ける際のグループの数が多くなると、回路規模が増大するという問題がある。グループの数と同じだけ積算カウント回路を用意する必要があるためである。   As described above, the configuration shown in FIG. 22 enables the cumulative counting of received packets. However, the circuit configuration shown in FIG. 22 has a problem in that the circuit scale increases as the number of groups when receiving packets are increased. This is because it is necessary to prepare as many integration count circuits as the number of groups.

そのため、ハードウェアとしてRAMが実装されているFPGAにおいて、多数のグループに対応したパケット積算機能を実現する際には、演算回路(加算回路)を1回路実装し、演算結果はRAMに格納することで回路規模を抑制する対応が取られることが多い。そこで、以下の手順によりパケットの積算カウント回路を実現することが検討された。
(1)受信パケットのグループに相当するアドレスを指定して、積算結果を保持するRAMから、前パケットまでの積算値が読み出される(リード処理)。
(2)加算器にて、読み出した積算値に1が加算される(演算処理)。
(3)グループに相当するアドレスが指定され、演算結果(積算値)がRAMにストアされる(ライト処理)。
Therefore, in the FPGA in which RAM is mounted as hardware, when realizing a packet integration function corresponding to a large number of groups, one arithmetic circuit (adder circuit) is mounted, and the calculation result is stored in the RAM. In many cases, countermeasures to reduce the circuit scale are taken. Accordingly, it has been studied to realize a packet counting circuit by the following procedure.
(1) The address corresponding to the group of received packets is designated, and the accumulated value up to the previous packet is read from the RAM holding the accumulated result (read process).
(2) The adder adds 1 to the read integrated value (arithmetic processing).
(3) An address corresponding to the group is designated, and the operation result (integrated value) is stored in the RAM (write process).

上記(1)〜(3)の動作を1クロックにて実行可能であれば、FPGAに実装されたRAMを用いてパケットの積算カウントが可能となる。即ち、FPGAにはRAMがハードウェアとしてチップに組み込み済であるので、リソースの有効利用が行える。   If the operations (1) to (3) can be executed in one clock, the packet can be counted using the RAM mounted on the FPGA. That is, since the RAM is already built in the chip as hardware in the FPGA, resources can be used effectively.

高速動作を目的とした通常のクロック同期型RAMは、書き込み側(ライト側)において、各信号をフリップフロップによりリタイミングした後にRAMコアに入力する構成を有する。また、上記のクロック同期型RAMは、書き込みアドレスと読み出しアドレスに同じ値を指定してアクセスすることを禁じていることが多い。そのため、クロック同期型RAMは、書き込んだデータを1クロック後に読み出すことができない。即ち、FPGAに組み込まれたクロック同期型RAMにおいては、RAMコアに書き込まれたデータを、1クロック後に読み出すことはできない。   A normal clock synchronous RAM intended for high-speed operation has a configuration in which each signal is input to the RAM core after being retimed by a flip-flop on the write side (write side). Also, the clock synchronous RAM described above often prohibits access by designating the same value for the write address and the read address. Therefore, the clock synchronous RAM cannot read out the written data after one clock. That is, in the clock synchronous RAM incorporated in the FPGA, the data written in the RAM core cannot be read after one clock.

従って、近年の通信装置に要求されるような高速動作において、FPGAに予め組み込まれたRAMを有効活用することができず、結果的に図22に示すような回路構成(演算回路とフリップフロップをグループの数だけ用意する構成)が用いられる。   Therefore, in a high-speed operation required for a recent communication apparatus, the RAM built in the FPGA cannot be effectively used. As a result, a circuit configuration (an arithmetic circuit and a flip-flop as shown in FIG. The number of groups prepared) is used.

以上のように、例えば、312.5MHzといったシステムクロックを用いる高速回路において、データの書き込み後の読み出しに1クロック処理が要求される場合、FPGAに組み込まれたRAMを有効活用できないという問題がある。   As described above, for example, in a high-speed circuit using a system clock of 312.5 MHz, when one clock processing is required for reading after data writing, there is a problem that the RAM incorporated in the FPGA cannot be effectively used.

上記の問題点は、特許文献1に開示された演算システムにおいても生じ得る。特許文献1が開示する演算システムでは、ライトアドレスとリードアドレスが一致する場合には、フリップフロップ(例えば、特許文献1の図5や図6に示される符号24)が保持するライトデータが出力される。換言するならば、ライトデータを一時的に保持するフリップフロップが1つであるため、ライトアドレスやライトデータのリタイミング手段を挿入することができない。そのため、上記のような312.5MHzといった高速なシステムクロックを使用すると、システム全体の動作マージンが低下する等の問題が生じる可能性がある。   The above problem can also occur in the arithmetic system disclosed in Patent Document 1. In the arithmetic system disclosed in Patent Document 1, when the write address matches the read address, the write data held by the flip-flop (for example, reference numeral 24 shown in FIGS. 5 and 6 of Patent Document 1) is output. The In other words, since there is one flip-flop that temporarily holds the write data, it is not possible to insert a write address or write data retiming means. For this reason, when a high-speed system clock such as 312.5 MHz as described above is used, there is a possibility that problems such as a decrease in the operation margin of the entire system may occur.

本発明は、ライトアドレスとリードアドレスが競合するような場合であっても、書き込まれたライトデータをリードデータとして出力すると共に、安定した高速動作を実現することに寄与する半導体装置を提供することを目的とする。   The present invention provides a semiconductor device that contributes to the realization of stable high-speed operation while outputting written write data as read data even when the write address and the read address conflict. With the goal.

本発明の第1の視点によれば、ライトアドレス、ライトデータ及びリードアドレスを受け付け、データの書き込みとデータの読み出しの並列動作が可能な第1の記憶部と、直列接続された複数の記憶素子からなる記憶部であって、前記ライトデータを受け付けると共に、前記第1の記憶部と並列接続された第2の記憶部と、少なくとも前記ライトアドレス及び前記リードアドレスに応じて、前記第1の記憶部から読み出されたリードデータ及び前記第2の記憶部をなす前記複数の記憶素子のいずれかに記憶されたデータのいずれかを外部に出力するデータとして決定する決定部と、前記決定部により外部に出力すると決定されたデータを選択的に出力する選択部と、を備える半導体装置が提供される。   According to the first aspect of the present invention, a first storage unit that accepts a write address, write data, and a read address and can perform parallel operations of writing data and reading data, and a plurality of storage elements connected in series And a second storage unit that receives the write data and is connected in parallel to the first storage unit, and at least the first storage according to the write address and the read address. A determination unit that determines, as data to be output to the outside, read data read from a unit and data stored in any of the plurality of storage elements forming the second storage unit, and the determination unit There is provided a semiconductor device including a selection unit that selectively outputs data determined to be output to the outside.

本発明の第2の視点によれば、ライトアドレス、ライトデータ及びリードアドレスを受け付け、データの書き込みとデータの読み出しの並列動作が可能な第1の記憶部と、直列接続された複数の記憶素子からなる記憶部であって、前記ライトデータを受け付けると共に、前記第1の記憶部と並列接続された第2の記憶部と、を含む記憶装置からのデータ出力方法であって、少なくとも前記ライトアドレス及び前記リードアドレスに応じて、前記第1の記憶部から読み出されたリードデータ及び前記第2の記憶部をなす前記複数の記憶素子のいずれかに記憶されたデータのいずれかを外部に出力するデータとして決定するステップと、前記外部に出力すると決定されたデータを選択的に出力するステップと、を含む、データ出力方法が提供される。   According to a second aspect of the present invention, a first storage unit that accepts a write address, write data, and a read address and can perform parallel operations of writing data and reading data, and a plurality of storage elements connected in series A data output method from a storage device including a second storage unit that receives the write data and is connected in parallel to the first storage unit, wherein the write address is at least the write address According to the read address, either read data read from the first storage unit or data stored in any of the plurality of storage elements forming the second storage unit is output to the outside. A data output method comprising: determining as data to be output; and selectively outputting data determined to be output to the outside .

本発明の各視点によれば、ライトアドレスとリードアドレスが競合するような場合であっても、書き込まれたライトデータをリードデータとして出力すると共に、安定した高速動作を実現することに寄与する半導体装置及びデータ出力方法が、提供される。   According to each aspect of the present invention, even if the write address and the read address conflict, the written write data is output as read data and contributes to realizing a stable high-speed operation An apparatus and a data output method are provided.

一実施形態の概要を説明するための図である。It is a figure for demonstrating the outline | summary of one Embodiment. 第1の実施形態に係る通信装置の内部構成の一例を示す図である。It is a figure which shows an example of the internal structure of the communication apparatus which concerns on 1st Embodiment. 第1の実施形態に係る演算モジュールの内部構成の一例を示す図である。It is a figure which shows an example of the internal structure of the arithmetic module which concerns on 1st Embodiment. 第1の実施形態に係る記憶部の内部構成の一例を示す図である。It is a figure which shows an example of the internal structure of the memory | storage part which concerns on 1st Embodiment. 第1の実施形態に係る読み出し先決定回路の回路構成の一例を示す図である。It is a figure which shows an example of the circuit structure of the reading destination determination circuit which concerns on 1st Embodiment. 第1の実施形態に係る選択信号出力回路の動作を示す真理値表の一例を示す図である。It is a figure which shows an example of the truth table which shows operation | movement of the selection signal output circuit which concerns on 1st Embodiment. 第1の実施形態に係るRAMコア単体に関する信号の入出力を示すタイムチャートの一例である。It is an example of the time chart which shows the input / output of the signal regarding the RAM core single-piece | unit which concerns on 1st Embodiment. 第1の実施形態に係る記憶部全体に関する信号の入出力を示すタイムチャートの一例である。It is an example of the time chart which shows the input / output of the signal regarding the whole memory | storage part which concerns on 1st Embodiment. 第1の実施形態に係るデータ出力方法の一例を示すフローチャートである。It is a flowchart which shows an example of the data output method which concerns on 1st Embodiment. 第1の変形例に係る記憶部の内部構成の一例を示す図である。It is a figure which shows an example of the internal structure of the memory | storage part which concerns on a 1st modification. 第1の変形例に係るRAMコア単体に関する信号の入出力を示すタイムチャートの一例である。It is an example of the time chart which shows the input-output of the signal regarding the RAM core single-piece | unit based on a 1st modification. 第1の変形例に係る記憶部全体に関する信号の入出力を示すタイムチャートの一例である。It is an example of the time chart which shows the input / output of the signal regarding the whole memory | storage part which concerns on a 1st modification. 第2の変形例に係る記憶部の内部構成の一例を示す図である。It is a figure which shows an example of the internal structure of the memory | storage part which concerns on a 2nd modification. 第2の変形例に係るRAMコア単体に関する信号の入出力を示すタイムチャートの一例である。It is an example of the time chart which shows the input / output of the signal regarding the RAM core single-piece | unit which concerns on a 2nd modification. 第2の変形例に係る記憶部全体に関する信号の入出力を示すタイムチャートの一例である。It is an example of the time chart which shows the input / output of the signal regarding the whole memory | storage part which concerns on a 2nd modification. 第3の変形例に係る記憶部の内部構成の一例を示す図である。It is a figure which shows an example of the internal structure of the memory | storage part which concerns on a 3rd modification. 第3の変形例に係るRAMコア単体に関する信号の入出力を示すタイムチャートの一例である。It is an example of the time chart which shows the input-output of the signal regarding the RAM core single-piece | unit which concerns on a 3rd modification. 第3の変形例に係る記憶部全体に関する信号の入出力を示すタイムチャートの一例である。It is an example of the time chart which shows the input / output of the signal regarding the whole memory | storage part which concerns on a 3rd modification. 第4の変形例に係る記憶部の内部構成の一例を示す図である。It is a figure which shows an example of the internal structure of the memory | storage part which concerns on a 4th modification. 第5の変形例に係る記憶部の内部構成の一例を示す図である。It is a figure which shows an example of the internal structure of the memory | storage part which concerns on a 5th modification. 第5の変形例に係る読み出し先決定回路の内部構成の一例を示す図である。It is a figure which shows an example of the internal structure of the reading destination determination circuit which concerns on a 5th modification. パケットモニタ回路の内部構成の一例を示す図である。It is a figure which shows an example of an internal structure of a packet monitor circuit.

初めに、一実施形態の概要について説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、この概要の記載はなんらの限定を意図するものではない。   First, an outline of one embodiment will be described. Note that the reference numerals of the drawings attached to the outline are attached to the respective elements for convenience as an example for facilitating understanding, and the description of the outline is not intended to be any limitation.

上述のように、ライトアドレスとリードアドレスが競合するような場合であっても、書き込まれたライトデータをリードデータとして出力すると共に、安定した高速動作を実現する半導体装置が望まれる。   As described above, there is a demand for a semiconductor device that outputs written write data as read data and realizes stable high-speed operation even when the write address and the read address conflict.

そこで、一例として図1に示す半導体装置100を提供する。半導体装置100は、第1の記憶部101と、第2の記憶部102と、決定部103と、選択部104と、を備える。第1の記憶部101は、ライトアドレス、ライトデータ及びリードアドレスを受け付け、データの書き込みとデータの読み出しの並列動作が可能である。第2の記憶部102は、直列接続された複数の記憶素子からなる記憶部であって、ライトデータを受け付けると共に、第1の記憶部101と並列接続される。決定部103は、少なくともライトアドレス及びリードアドレスに応じて、第1の記憶部101から読み出されたリードデータ及び第2の記憶部102をなす複数の記憶素子のいずれかに記憶されたデータのいずれかを外部に出力するデータとして決定する。選択部104は、決定部103により外部に出力すると決定されたデータを選択的に出力する。   Therefore, as an example, the semiconductor device 100 illustrated in FIG. 1 is provided. The semiconductor device 100 includes a first storage unit 101, a second storage unit 102, a determination unit 103, and a selection unit 104. The first storage unit 101 receives a write address, write data, and a read address, and can perform a parallel operation of writing data and reading data. The second storage unit 102 is a storage unit including a plurality of storage elements connected in series, and receives write data and is connected in parallel to the first storage unit 101. The determination unit 103 determines the read data read from the first storage unit 101 and the data stored in any of the plurality of storage elements forming the second storage unit 102 according to at least the write address and the read address. Either one is determined as data to be output to the outside. The selection unit 104 selectively outputs data determined to be output to the outside by the determination unit 103.

半導体装置100は、例えば、FPGAに標準的に搭載されているデュアルポートメモリを第1の記憶部101として用いる。また、半導体装置100は、システムクロックに同期してデータを保持するフリップフロップを複数連結することで、第2の記憶部102とする。半導体装置100は、ライトアドレスとリードアドレスが競合し、第1の記憶部101からデータを読み出すことができない場合には、第2の記憶部102が記憶するデータを、半導体装置100の出力データとして外部に出力する。即ち、半導体装置100は、第1の記憶部101と第2の記憶部102を併用することで、ライトアドレスとリードアドレスの競合による問題点を解決する。   For example, the semiconductor device 100 uses, as the first storage unit 101, a dual port memory that is typically mounted on an FPGA. Further, the semiconductor device 100 serves as the second storage unit 102 by connecting a plurality of flip-flops that hold data in synchronization with the system clock. When the write address and the read address conflict and the data cannot be read from the first storage unit 101, the semiconductor device 100 uses the data stored in the second storage unit 102 as output data of the semiconductor device 100. Output to the outside. That is, the semiconductor device 100 solves the problem caused by the conflict between the write address and the read address by using the first storage unit 101 and the second storage unit 102 together.

また、半導体装置100に使用されるシステムクロックが高速であるため、ライトデータやライトアドレスを伝達するバスにリタイミング手段を挿入することが望まれる場合がある。このような場合であっても、第2の記憶部102は、直列接続された複数の記憶素子から構成されるため、リタイミング手段を挿入することにより生じる必要なデータの消失を回避できる。例えば、図1において、ライトデータ及びライトアドレスに係るバスに1段のリタイミング手段が挿入されたとする。この場合、ライトデータ及びライトアドレスはリタイミング手段により、1クロック遅延して第1の記憶部101に供給される。そのため、第1の記憶部101において、ライトアドレスとリードアドレスが一致したとしても、実際に半導体装置100に供給されているライトアドレスは1クロック前のものである。従って、第2の記憶部102に含まれる記憶素子が1つの場合には、1クロック前のライトデータを保持することができず、第1の記憶部101にてライトアドレスとリードアドレスが一致した場合に、必要なデータ(ライトデータ)が消滅することになる。対して、上記の例で言えば、第2の記憶部102に2個以上の記憶素子が含まれ1クロック前のライトデータは保持されるので、必要なデータが消失することはない。このように、第2の記憶部102に複数の記憶素子を含ませることで、高速なシステムクロックが使用されたとしても、必要に応じてリタイミング手段を挿入できる余地があるので、半導体装置100の安定動作を実現できる。   In addition, since the system clock used in the semiconductor device 100 is high-speed, it may be desired to insert retiming means in a bus that transmits write data and write addresses. Even in such a case, since the second storage unit 102 includes a plurality of storage elements connected in series, it is possible to avoid the loss of necessary data caused by inserting retiming means. For example, in FIG. 1, it is assumed that one stage of retiming means is inserted in the bus related to write data and write address. In this case, the write data and the write address are supplied to the first storage unit 101 after being delayed by one clock by the retiming means. Therefore, even if the write address and the read address match in the first storage unit 101, the write address that is actually supplied to the semiconductor device 100 is one clock before. Therefore, in the case where the second storage unit 102 includes one storage element, it is not possible to hold the write data one clock before, and the write address and the read address match in the first storage unit 101. In this case, necessary data (write data) is lost. On the other hand, in the above example, the second storage unit 102 includes two or more storage elements and holds the write data one clock before, so that necessary data is not lost. In this manner, by including a plurality of storage elements in the second storage unit 102, there is room for inserting retiming means as needed even when a high-speed system clock is used. Stable operation can be realized.

以下に具体的な実施の形態について、図面を参照してさらに詳しく説明する。なお、各実施形態において同一構成要素には同一の符号を付し、その説明を省略する。   Hereinafter, specific embodiments will be described in more detail with reference to the drawings. In addition, in each embodiment, the same code | symbol is attached | subjected to the same component and the description is abbreviate | omitted.

[第1の実施形態]
第1の実施形態について、図面を用いてより詳細に説明する。
[First Embodiment]
The first embodiment will be described in more detail with reference to the drawings.

図2は、第1の実施形態に係る通信装置1の内部構成の一例を示す図である。図2を参照すると、通信装置1は、通信モジュール10と、演算モジュール11と、を含んで構成される。   FIG. 2 is a diagram illustrating an example of an internal configuration of the communication apparatus 1 according to the first embodiment. Referring to FIG. 2, the communication device 1 includes a communication module 10 and an arithmetic module 11.

通信モジュール10は、ネットワークを介して他の装置とパケットの送受信を行うインターフェースである。   The communication module 10 is an interface that transmits and receives packets to and from other devices via a network.

演算モジュール11は、通信モジュール10からパケットを受信し、当該受信パケットに応じた演算処理を行う手段である。少なくとも演算モジュール11は、FPGAを用いて実現される。   The arithmetic module 11 is means for receiving a packet from the communication module 10 and performing arithmetic processing according to the received packet. At least the arithmetic module 11 is realized using an FPGA.

通信モジュール10と演算モジュール11は、例えば、インターラーケン等のチップ間通信プロトコルを用いてパケットの送受信を行う。   For example, the communication module 10 and the arithmetic module 11 transmit and receive packets using an inter-chip communication protocol such as interlaken.

図3は、演算モジュール11の内部構成の一例を示す図である。演算モジュール11は、演算部21と、記憶部22と、を含んで構成される。   FIG. 3 is a diagram illustrating an example of the internal configuration of the arithmetic module 11. The calculation module 11 includes a calculation unit 21 and a storage unit 22.

演算部21は、通信モジュール10からパケットを入力する。演算部21は、入力したパケットに対して予め定めた演算処理を行い、演算結果を記憶部22に格納する。例えば、演算部21は、入力パケットのヘッダに格納されたアドレスに応じて、各パケットをグループに振り分け、グループごとに受信したパケットの数を積算カウントする。   The computing unit 21 inputs a packet from the communication module 10. The calculation unit 21 performs a predetermined calculation process on the input packet and stores the calculation result in the storage unit 22. For example, the computing unit 21 sorts each packet into a group according to the address stored in the header of the input packet, and counts the number of packets received for each group.

記憶部22は、2つの入出力ポートを備え、各入出力ポートは独立してアクセス可能に構成される。   The storage unit 22 includes two input / output ports, and each input / output port is configured to be independently accessible.

演算部21は、ライトデータW_DATA、ライトアドレスW_ADD、ライトイネーブルW_ENのそれぞれを記憶部22に出力する。また、演算部21は、リードアドレスR_ADD、リードイネーブルR_ENのそれぞれを記憶部22に出力し、記憶部22からリードデータR_DATAを取得する。なお、ライトイネーブルW_EN及びリードイネーブルR_ENのアクティブはHレベルである。   The arithmetic unit 21 outputs the write data W_DATA, the write address W_ADD, and the write enable W_EN to the storage unit 22. In addition, the calculation unit 21 outputs each of the read address R_ADD and the read enable R_EN to the storage unit 22 and acquires the read data R_DATA from the storage unit 22. Note that the write enable W_EN and the read enable R_EN are active at the H level.

図4は、記憶部22の内部構成の一例を示す図である。図4を参照すると、記憶部22は、記憶回路23と、メモリアレイ24と、選択回路25と、読み出し先決定回路26と、を含んで構成される。   FIG. 4 is a diagram illustrating an example of the internal configuration of the storage unit 22. Referring to FIG. 4, the storage unit 22 includes a storage circuit 23, a memory array 24, a selection circuit 25, and a read destination determination circuit 26.

記憶回路23は、演算部21から供給されるライトデータW_DATAを記憶する回路である。記憶回路23は、2つの独立した入出力ポートを有するRAMコア31を含む。   The storage circuit 23 is a circuit that stores the write data W_DATA supplied from the calculation unit 21. The storage circuit 23 includes a RAM core 31 having two independent input / output ports.

RAMコア31は、書き込みと読み出しが並列して行える所謂デュアルポートメモリである。なお、RAMコア31は、ライトアドレスとリードアドレスに同じ値を設定することは禁止されている記憶装置である。RAMコア31は、上述の第1の記憶部101に相当する。   The RAM core 31 is a so-called dual port memory that can perform writing and reading in parallel. The RAM core 31 is a storage device that is prohibited from setting the same value for the write address and the read address. The RAM core 31 corresponds to the first storage unit 101 described above.

ライトデータW_DATAは、ECC(Error Check and Correction)エンコーダ32、フリップフロップ33を介して、RAMコア31のライトデータ入力端子D_IN_RAMに入力される。ライトアドレスW_ADDは、フリップフロップ34を介して、RAMコア31のライトアドレス入力端子W_ADD_RAMに入力される。ライトイネーブルW_ENは、フリップフロップ35を介して、RAMコア31のライトイネーブル入力端子W_EN_RAMに入力される。   The write data W_DATA is input to a write data input terminal D_IN_RAM of the RAM core 31 via an ECC (Error Check and Correction) encoder 32 and a flip-flop 33. The write address W_ADD is input to the write address input terminal W_ADD_RAM of the RAM core 31 via the flip-flop 34. The write enable W_EN is input to the write enable input terminal W_EN_RAM of the RAM core 31 via the flip-flop 35.

リードアドレスR_ADDは、フリップフロップ36を介して、RAMコア31のリードアドレス入力端子R_ADD_RAMに入力される。リードイネーブルR_ENは、フリップフロップ37を介して、RAMコア31のリードイネーブル入力端子R_EN_RAMに入力される。RAMコア31は、ECCデコーダ38を介して、リードデータ出力端子D_OUT_RAMから、リードデータRAM_OUTを選択回路25のポート0に出力する。   The read address R_ADD is input to the read address input terminal R_ADD_RAM of the RAM core 31 via the flip-flop 36. The read enable R_EN is input to the read enable input terminal R_EN_RAM of the RAM core 31 via the flip-flop 37. The RAM core 31 outputs the read data RAM_OUT to the port 0 of the selection circuit 25 from the read data output terminal D_OUT_RAM via the ECC decoder 38.

なお、ECCエンコーダ32は、RAMコア31に書き込むデータに対応する誤り訂正符号を生成する手段(誤り訂正符号化回路)であり、ECCデコーダ38は誤り訂正符号のデコードと誤りデータの訂正を行う手段(誤り訂正回路)である。即ち、記憶回路23は、RAMコア31に保持されるデータにソフトエラー(ハードウェアには故障は生じていないが誤ったデータが記憶されるエラー;ビットエラー)が発生した場合に、当該ソフトエラーを訂正する機能を有する。   The ECC encoder 32 is a means (error correction coding circuit) for generating an error correction code corresponding to data to be written to the RAM core 31, and the ECC decoder 38 is a means for decoding the error correction code and correcting the error data. (Error correction circuit). In other words, the storage circuit 23, when a soft error occurs in the data held in the RAM core 31 (error in which incorrect data is stored although no hardware failure has occurred; bit error), the soft error It has a function to correct.

また、記憶回路23は、RAMコア31の各種入力端子にフリップフロップを接続する構成を有し、各種データのリタイミングを実施することで、システムクロックが312.5MHzとなるような高速動作を実現する。具体的には、RAMコア31に供給されるライトデータ、ライトアドレス、ライトイネーブル、リードアドレス、リードイネーブルのそれぞれを、システムクロックに同期して保持するフリップフロップ33〜37がリタイミング手段として機能する。   The memory circuit 23 has a configuration in which flip-flops are connected to various input terminals of the RAM core 31, and realizes high-speed operation such that the system clock is 312.5 MHz by performing retiming of various data. To do. Specifically, flip-flops 33 to 37 that hold the write data, write address, write enable, read address, and read enable supplied to the RAM core 31 in synchronization with the system clock function as retiming means. .

メモリアレイ24は、複数のフリップフロップ(記憶素子)が直列接続された回路である。メモリアレイ24は、内部のフリップフロップによりデータを記憶する回路である。記憶回路23とメモリアレイ24は、並列に接続されている。メモリアレイ24は、上述の第2の記憶部102に相当する。   The memory array 24 is a circuit in which a plurality of flip-flops (memory elements) are connected in series. The memory array 24 is a circuit that stores data by an internal flip-flop. The storage circuit 23 and the memory array 24 are connected in parallel. The memory array 24 corresponds to the second storage unit 102 described above.

メモリアレイ24は、演算部21から供給されるライトデータW_DATAを、システムクロックに同期して記憶する手段である。図4に示す構成では、メモリアレイ24は、4つのフリップフロップ41−1〜41−4を有するので、3クロック前までのライトデータW_DATAの記憶が可能である。   The memory array 24 is means for storing the write data W_DATA supplied from the arithmetic unit 21 in synchronization with the system clock. In the configuration shown in FIG. 4, the memory array 24 includes four flip-flops 41-1 to 41-4, and therefore can store write data W_DATA up to three clocks before.

フリップフロップ41−1〜41−4それぞれのデータ出力端子は、選択回路25の入力端子と接続されている。具体的には、フリップフロップ41−1のデータ出力端子は、選択回路25のポート1に係る入力端子と接続されている。同様に、フリップフロップ41−2のデータ出力端子は選択回路25のポート2、フリップフロップ41−3のデータ出力端子は選択回路25のポート3、フリップフロップ41−4のデータ出力端子は選択回路25のポート4にそれぞれ接続されている。   The data output terminals of the flip-flops 41-1 to 41-4 are connected to the input terminal of the selection circuit 25. Specifically, the data output terminal of the flip-flop 41-1 is connected to the input terminal related to port 1 of the selection circuit 25. Similarly, the data output terminal of the flip-flop 41-2 is port 2 of the selection circuit 25, the data output terminal of the flip-flop 41-3 is port 3 of the selection circuit 25, and the data output terminal of the flip-flop 41-4 is the selection circuit 25. Are connected to ports 4 respectively.

読み出し先決定回路26は、演算部21から供給されるアドレス情報(ライトアドレスW_ADD、リードアドレスR_ADD)と、動作許可情報(ライトイネーブルW_EN、リードイネーブルR_EN)と、に応じて、記憶部22全体の出力データを決定する手段である。より具体的には、読み出し先決定回路26は、アドレス情報と動作許可情報に基づいて、記憶回路23の出力データ及びメモリアレイ24からの出力データのいずれを記憶部22から外部に出力するデータ(リードデータR_DATA)とするかを決定する回路である。即ち、読み出し先決定回路26は、ライトアドレスW_ADDとリードアドレスR_ADDを監視し、これらのアドレス情報と予め定めた所定の規則(ルール)に基づいて、選択回路25によるデータの読み出し先を決定する回路である。読み出し先決定回路26は、上述の決定部103に相当する。   The read destination determination circuit 26 determines the entire storage unit 22 according to the address information (write address W_ADD, read address R_ADD) and operation permission information (write enable W_EN, read enable R_EN) supplied from the calculation unit 21. A means for determining output data. More specifically, the read destination determination circuit 26 outputs either the output data of the storage circuit 23 or the output data of the memory array 24 from the storage unit 22 to the outside based on the address information and the operation permission information ( This is a circuit for determining whether to use read data (R_DATA). That is, the read destination determination circuit 26 monitors the write address W_ADD and the read address R_ADD, and determines the data read destination by the selection circuit 25 based on these address information and a predetermined rule. It is. The read destination determination circuit 26 corresponds to the determination unit 103 described above.

読み出し先決定回路26が選択回路25に向けて出力する選択信号SELは、フリップフロップ27により1クロック遅延されて、選択信号SEL_1Tとして選択回路25に供給される。なお、図4を含む図面において、各フリップフロップは、それぞれが記憶するデータのビット数に応じた数のフリップフロップが並列接続されて構成される。例えば、ライトデータW_DATAが16ビットのデータであれば、フリップフロップ33やフリップフロップ41−1〜41−4のそれぞれは16個のフリップフロップからなる。   The selection signal SEL output from the reading destination determination circuit 26 toward the selection circuit 25 is delayed by one clock by the flip-flop 27 and is supplied to the selection circuit 25 as the selection signal SEL_1T. In the drawings including FIG. 4, each flip-flop is configured by connecting in parallel a number of flip-flops corresponding to the number of bits of data stored therein. For example, if the write data W_DATA is 16-bit data, each of the flip-flop 33 and the flip-flops 41-1 to 41-4 is composed of 16 flip-flops.

図5は、読み出し先決定回路26の回路構成の一例を示す図である。図5を参照すると、読み出し先決定回路26は、アドレス比較回路51−1〜51−4と、論理積回路52−1〜52−4と、フリップフロップ53−1〜53−6と、選択信号出力回路54と、を含んで構成される。   FIG. 5 is a diagram illustrating an example of the circuit configuration of the read destination determination circuit 26. Referring to FIG. 5, the read destination determination circuit 26 includes an address comparison circuit 51-1 to 51-4, an AND circuit 52-1 to 52-4, flip-flops 53-1 to 53-6, and a selection signal. And an output circuit 54.

フリップフロップ53−1〜53−3はそれぞれ、ライトアドレスW_ADDを遅延させる。フリップフロップ53−4〜53−6はそれぞれ、ライトイネーブルW_ENを遅延させる。なお、以降の説明において、フリップフロップ53−1〜53−3のそれぞれが出力するデータを、WA_1T、WA_2T、WA_3Tと表記する。また、フリップフロップ53−4〜53−6のそれぞれが出力するデータを、WE_1T、WE_2T、WE_3Tと表記する。   Each of the flip-flops 53-1 to 53-3 delays the write address W_ADD. Each of the flip-flops 53-4 to 53-6 delays the write enable W_EN. In the following description, data output from each of the flip-flops 53-1 to 53-3 will be denoted as WA_1T, WA_2T, and WA_3T. The data output from each of the flip-flops 53-4 to 53-6 is denoted as WE_1T, WE_2T, and WE_3T.

アドレス比較回路51−1は、現クロック(システムクロックの遅延数=0)におけるライトアドレスW_ADDとリードアドレスR_ADDを比較し、両者が一致する場合にはHレベルを出力する。アドレス比較回路51−1は、ライトアドレスW_ADDとリードアドレスR_ADDが不一致の場合には、Lレベルを出力する。   The address comparison circuit 51-1 compares the write address W_ADD and the read address R_ADD in the current clock (system clock delay number = 0), and outputs an H level if they match. The address comparison circuit 51-1 outputs an L level when the write address W_ADD and the read address R_ADD do not match.

アドレス比較回路51−2は、1クロック前のライトアドレスW_ADD(遅延数=1クロック)と、現クロックのリードアドレスR_ADDと、が一致するか否かを判定する回路である。同様に、アドレス比較回路51−3は2クロック前、アドレス比較回路51−4は3クロック前のライトアドレスW_ADDと現クロックのリードアドレスR_ADDの一致・不一致を判定する回路である。   The address comparison circuit 51-2 is a circuit that determines whether or not the write address W_ADD (the number of delays = 1 clock) one clock before and the read address R_ADD of the current clock match. Similarly, the address comparison circuit 51-3 is a circuit that determines whether the write address W_ADD that is two clocks before and the write address W_ADD that is three clocks old and the read address R_ADD of the current clock match.

論理積回路52−1は、現クロックにおけるライトイネーブルW_ENとアドレス比較回路51−1の出力信号の論理積演算を行い、演算結果を選択信号出力回路54に出力する。論理積回路52−2は、1クロック前のライトイネーブルW_ENとアドレス比較回路51−2の出力信号の論理積演算を行い、その結果を選択信号出力回路54に出力する。同様に、論理積回路52−3は2クロック前、論理積回路52−4は3クロック前のライトイネーブルW_ENとアドレス比較回路51−3、51−4の出力信号の論理積演算を行い、その結果を選択信号出力回路54に出力する。   The logical product circuit 52-1 performs a logical product operation of the write enable W_EN in the current clock and the output signal of the address comparison circuit 51-1, and outputs the calculation result to the selection signal output circuit. The logical product circuit 52-2 performs a logical product operation of the write enable W_EN one clock before and the output signal of the address comparison circuit 51-2, and outputs the result to the selection signal output circuit. Similarly, the AND circuit 52-3 performs an AND operation between the write enable W_EN and the output signal of the address comparison circuits 51-3 and 51-4 two clocks before and the AND circuit 52-4, and The result is output to the selection signal output circuit 54.

選択信号出力回路54は、論理積回路52−1〜52−4のそれぞれが出力する演算結果を、入力端子IN_1〜IN_4により取得する。選択信号出力回路54は、入力端子IN_1〜IN_4に印加される論理レベル(Hレベル又はLレベル)に応じて、選択信号SELを決定する回路である。選択信号出力回路54は、ライトイネーブルW_ENがHレベルであるライトアドレスW_ADDに関し、ライトアドレスW_ADDとリードアドレスR_ADDとの間の関係に基づいて、選択信号SELを決定する。具体的には、選択信号出力回路54は、以下の動作を行う。   The selection signal output circuit 54 acquires the operation results output from the AND circuits 52-1 to 52-4 from the input terminals IN_1 to IN_4. The selection signal output circuit 54 is a circuit that determines the selection signal SEL according to the logic level (H level or L level) applied to the input terminals IN_1 to IN_4. The selection signal output circuit 54 determines the selection signal SEL based on the relationship between the write address W_ADD and the read address R_ADD with respect to the write address W_ADD in which the write enable W_EN is at the H level. Specifically, the selection signal output circuit 54 performs the following operation.

(a)選択信号出力回路54は、ライトアドレスW_ADDとリードアドレスR_ADDが一致する場合(IN_1=Hレベル)、選択回路25がポート1を選択するように選択信号SELを出力する。つまり、ライトアドレスW_ADDとリードアドレスR_ADDが一致する場合、フリップフロップ41−1の出力データが選択回路25から出力される。
(b)選択信号出力回路54は、1クロック前のライトアドレスW_ADDとリードアドレスR_ADDが一致する場合(IN_2=Hレベル)、選択回路25がポート2を選択するように選択信号SELを出力する。つまり、1クロック前のライトアドレスW_ADDとリードアドレスR_ADDが一致する場合、フリップフロップ41−2の出力データが選択回路25から出力される。
(c)選択信号出力回路54は、2クロック前のライトアドレスW_ADDとリードアドレスR_ADDが一致する場合(IN_3=Hレベル)、選択回路25がポート3を選択するように選択信号SELを出力する。つまり、2クロック前のライトアドレスW_ADDとリードアドレスR_ADDが一致する場合、フリップフロップ41−3の出力データが選択回路25から出力される。
(d)選択信号出力回路54は、3クロック前のライトアドレスW_ADDとリードアドレスR_ADDが一致する場合(IN_4=Hレベル)、選択回路25がポート4を選択するように選択信号SELを出力する。つまり、3クロック前のライトアドレスW_ADDとリードアドレスR_ADDが一致する場合、フリップフロップ41−4の出力データが選択回路25から出力される。
(e)選択信号出力回路54は、ライトアドレスW_ADDとリードアドレスR_ADDの関係が上記(a)〜(d)以外の場合には、選択回路25がポート0のデータ(リードデータRAM_OUT)を選択するように選択信号SELを出力する。
(A) When the write address W_ADD and the read address R_ADD match (IN_1 = H level), the selection signal output circuit 54 outputs the selection signal SEL so that the selection circuit 25 selects the port 1. That is, when the write address W_ADD matches the read address R_ADD, the output data of the flip-flop 41-1 is output from the selection circuit 25.
(B) The selection signal output circuit 54 outputs the selection signal SEL so that the selection circuit 25 selects the port 2 when the write address W_ADD one clock before and the read address R_ADD coincide (IN_2 = H level). That is, when the write address W_ADD one clock before and the read address R_ADD coincide, the output data of the flip-flop 41-2 is output from the selection circuit 25.
(C) When the write address W_ADD two clocks before and the read address R_ADD match (IN_3 = H level), the selection signal output circuit 54 outputs the selection signal SEL so that the selection circuit 25 selects the port 3. That is, when the write address W_ADD two clocks before and the read address R_ADD coincide, the output data of the flip-flop 41-3 is output from the selection circuit 25.
(D) The selection signal output circuit 54 outputs the selection signal SEL so that the selection circuit 25 selects the port 4 when the write address W_ADD three clocks before and the read address R_ADD coincide (IN_4 = H level). That is, when the write address W_ADD three clocks before and the read address R_ADD coincide, the output data of the flip-flop 41-4 is output from the selection circuit 25.
(E) When the relationship between the write address W_ADD and the read address R_ADD is other than the above (a) to (d), the selection signal output circuit 54 selects the data of the port 0 (read data RAM_OUT). The selection signal SEL is output as follows.

上記(a)〜(e)に係る選択信号出力回路54の動作を真理値表としてまとめた図が、図6である。なお、図6における「×」はドントケアを示す。   FIG. 6 is a diagram in which the operations of the selection signal output circuit 54 according to the above (a) to (e) are summarized as a truth table. Note that “x” in FIG. 6 indicates don't care.

以上のように、読み出し先決定回路26は、リードアドレスR_ADDとライトアドレスW_ADDが一致する際のシステムクロックの遅延数に応じて、外部に出力するデータを決定する。より具体的には、読み出し先決定回路26は、ライトアドレスW_ADDとリードアドレスR_ADDが一致する場合には、メモリアレイ24をなす複数のフリップフロップのうち、初段のフリップフロップ41−1が記憶するデータを外部に出力するデータに決定する。また、読み出し先決定回路26は、システムクロックの遅延数が、メモリアレイ24を構成するフリップフロップの数(第1の実施形態では4)以上の場合には、RAMコア31から読み出されるデータを外部に出力するデータに決定する。   As described above, the read destination determination circuit 26 determines data to be output to the outside according to the number of delays of the system clock when the read address R_ADD and the write address W_ADD match. More specifically, when the write address W_ADD and the read address R_ADD match, the read destination determination circuit 26 stores the data stored in the first flip-flop 41-1 among the plurality of flip-flops forming the memory array 24. Is determined as data to be output to the outside. In addition, the read destination determination circuit 26 externally reads data read from the RAM core 31 when the number of delays of the system clock is equal to or greater than the number of flip-flops (four in the first embodiment) constituting the memory array 24. Determine the data to be output to.

選択回路25は、選択信号SELが1クロック遅延された選択信号SEL_1Tにより、記憶部22の外部に出力するデータを選択的に出力する回路である。選択回路25は、上述の選択部104に相当する。   The selection circuit 25 is a circuit that selectively outputs data to be output to the outside of the storage unit 22 based on a selection signal SEL_1T obtained by delaying the selection signal SEL by one clock. The selection circuit 25 corresponds to the selection unit 104 described above.

次に、図7及び図8に示すタイムチャートを用いて記憶部22の動作を説明する。   Next, the operation of the storage unit 22 will be described using the time charts shown in FIGS.

図7は、RAMコア31単体に関する信号の入出力を示すタイムチャートの一例である。図8は、記憶部22全体に関する信号の入出力を示すタイムチャートの一例である。図7及び図8では、記憶部22からデータを読み出し、当該呼び出したデータに対して演算処理(例えば、パケットの積算カウント処理)を施し、次のクロックにて演算結果を書き込むといった演算部21の動作を想定している。つまり、記憶部22は、リード動作の1クロック後にライト動作することを想定している。   FIG. 7 is an example of a time chart showing signal input / output related to the RAM core 31 alone. FIG. 8 is an example of a time chart showing signal input / output related to the entire storage unit 22. In FIGS. 7 and 8, the calculation unit 21 reads data from the storage unit 22, performs calculation processing (for example, packet integration count processing) on the called data, and writes the calculation result at the next clock. Operation is assumed. That is, it is assumed that the storage unit 22 performs a write operation one clock after the read operation.

また、パケットに含まれるアドレスに応じて、各パケットはグループ分けされるが、図7及び図8では、同一のグループに関する処理が連続する場合を想定している。具体的には、時刻T15〜T19にて、RAMコア31のアドレス値1に書き込まれるパケットが5回連続して入力されている。   Further, although each packet is grouped according to the address included in the packet, FIG. 7 and FIG. 8 assume a case where the processes related to the same group are continued. Specifically, at time T15 to T19, a packet to be written to the address value 1 of the RAM core 31 is continuously input five times.

図7を参照すると、時刻T01〜T06の期間は、ライトイネーブルW_ENがHレベルであるためRAMコア31には、ライトデータ値0a〜5aのそれぞれがRAMコア31のアドレス値0〜5に書き込まれる。なお、時刻T01〜T06の期間では、リードイネーブルR_ENはLレベルであるため、RAMコア31からデータが読み出されることはない。   Referring to FIG. 7, during the period from time T01 to T06, since write enable W_EN is at the H level, write data values 0a to 5a are written in RAM core 31 at address values 0 to 5 of RAM core 31, respectively. . In the period from time T01 to time T06, the read enable R_EN is at the L level, so that data is not read from the RAM core 31.

次に、時刻T09にて、演算部21によるライトデータW_DATA及びライトアドレスW_ADDの供給に先立ち、RAMコア31からデータの読み出しが行われる。具体的には、ライトアドレスW_ADDにアドレス値0が設定される1クロック前に、リードイネーブルR_ENがHレベル、リードアドレスR_ADDにアドレス値0がそれぞれ設定される。当該リードイネーブルR_EN及びリードアドレスR_ADDは1クロック遅延されてRAMコア31に供給され、時刻T10にて、RAMコア31のアドレス値0からリードデータ値0aがリードデータRAM_OUTとして読み出される。   Next, at time T09, data is read from the RAM core 31 prior to the supply of the write data W_DATA and the write address W_ADD by the arithmetic unit 21. Specifically, the read enable R_EN is set to the H level and the address value 0 is set to the read address R_ADD one clock before the address value 0 is set to the write address W_ADD. The read enable R_EN and the read address R_ADD are delayed by one clock and supplied to the RAM core 31. At time T10, the read data value 0a is read as the read data RAM_OUT from the address value 0 of the RAM core 31.

また、時刻T10にて、ライトイネーブルW_ENがHレベルに設定され、アドレス値0、ライトデータ値0bに係る書き込み情報が、記憶部22に供給される。当該書き込み情報(アドレス値0、ライトデータ値0b)は、フリップフロップ34、35により1クロック遅延されてRAMコア31に供給され、時刻T11のタイミングにてRAMコア31に書き込まれる。RAMコア31は、このようなデータの読み出し動作と書き込みに係る動作を、時刻T14まで繰り返す。   At time T10, the write enable W_EN is set to the H level, and write information relating to the address value 0 and the write data value 0b is supplied to the storage unit 22. The write information (address value 0, write data value 0b) is delayed by one clock by the flip-flops 34 and 35, supplied to the RAM core 31, and written to the RAM core 31 at time T11. The RAM core 31 repeats such data read and write operations until time T14.

時刻T15において、ライトアドレスW_ADDとリードアドレスR_ADDに同じアドレス値1が、記憶部22に供給される。従って、時刻T15から1クロック遅れた時刻T16にて、RAMコア31に、同じアドレス値1を持つライトアドレスW_ADDとリードアドレスR_ADDが供給される。この場合、RAMコア31に同時アクセスが発生することとなり、RAMコア31から出力される値(リードデータRAM_OUT)は不定となる。即ち、RAMコア31の動作は、期待動作と異なる。   At time T15, the same address value 1 is supplied to the storage unit 22 as the write address W_ADD and the read address R_ADD. Accordingly, the write address W_ADD and the read address R_ADD having the same address value 1 are supplied to the RAM core 31 at time T16 which is delayed by one clock from time T15. In this case, simultaneous access occurs in the RAM core 31, and the value (read data RAM_OUT) output from the RAM core 31 is indefinite. That is, the operation of the RAM core 31 is different from the expected operation.

なお、図7以降の図面において、RAMコア31によるリードデータRAM_OUTが不定の場合の値を「×」を用いて表記する。また、ライトイネーブルW_ENやリードイネーブルR_ENが無効(Lレベル)の場合のデータ値及びアドレス値は無意味であるので、このような場合のデータ値等は「−」を用いて表記する。   In FIG. 7 and subsequent drawings, the value when the read data RAM_OUT by the RAM core 31 is indefinite is described using “×”. In addition, since the data value and the address value when the write enable W_EN and the read enable R_EN are invalid (L level) are meaningless, the data value in such a case is described using “-”.

図8を参照すると、時刻T12にて、1クロック前の時刻T11におけるライトアドレスW_ADD(ライトアドレス値=1)と、リードアドレスR_ADD(リードアドレス値=1)と、が一致する。そのため、読み出し先決定回路26の論理積回路52−2は、Hレベルを出力する。その結果、選択信号出力回路54の入力端子IN_2はHレベルとなる。図6を参照すると、入力端子IN_2がHレベルであるので、選択信号出力回路54は、選択回路25がポート2を選択するように選択信号SELを出力する。図8の時刻T13にて、選択信号SELが1クロック遅延された選択信号SEL_1Tが、選択回路25に供給される。選択回路25は、ポート2に供給されているデータ(メモリアレイ24のフリップフロップ41−2の出力データ)である「1b」を、記憶部22からのリードデータR_DATAとして出力する。   Referring to FIG. 8, at time T12, the write address W_ADD (write address value = 1) and the read address R_ADD (read address value = 1) at time T11 one clock before match. Therefore, the logical product circuit 52-2 of the read destination determination circuit 26 outputs the H level. As a result, the input terminal IN_2 of the selection signal output circuit 54 becomes H level. Referring to FIG. 6, since the input terminal IN_2 is at the H level, the selection signal output circuit 54 outputs the selection signal SEL so that the selection circuit 25 selects the port 2. At time T13 in FIG. 8, the selection signal SEL_1T obtained by delaying the selection signal SEL by one clock is supplied to the selection circuit 25. The selection circuit 25 outputs “1b”, which is data supplied to the port 2 (output data of the flip-flop 41-2 of the memory array 24), as read data R_DATA from the storage unit 22.

記憶部22は、このような動作を時刻T14まで行う。   The storage unit 22 performs such an operation until time T14.

次に、時刻T15において、ライトアドレスW_ADDとリードアドレスR_ADDとして同じアドレス値1が、記憶部22に供給される。この場合、ライトアドレス値とリードアドレス値が一致するため、読み出し先決定回路26の論理積回路52−1は、Hレベルを出力する。その結果、選択信号出力回路54の入力端子IN_1にHレベルが供給される。図6を参照すると、入力端子IN_1がHレベルであるので、選択信号出力回路54は、選択回路25がポート1を選択するように選択信号SELを出力する。時刻T16にて、選択信号SELが1クロック遅延された選択信号SEL_1Tが、選択回路25に供給される。選択回路25は、ポート1に供給されているデータ(メモリアレイ24のフリップフロップ41−1の出力データ)である「1d」を、記憶部22からのリードデータR_DATAとして出力する。   Next, at time T15, the same address value 1 is supplied to the storage unit 22 as the write address W_ADD and the read address R_ADD. In this case, since the write address value matches the read address value, the AND circuit 52-1 of the read destination determination circuit 26 outputs the H level. As a result, the H level is supplied to the input terminal IN_1 of the selection signal output circuit 54. Referring to FIG. 6, since the input terminal IN_1 is at the H level, the selection signal output circuit 54 outputs the selection signal SEL so that the selection circuit 25 selects the port 1. At time T16, the selection signal SEL_1T obtained by delaying the selection signal SEL by one clock is supplied to the selection circuit 25. The selection circuit 25 outputs “1d”, which is data supplied to the port 1 (output data of the flip-flop 41-1 of the memory array 24), as read data R_DATA from the storage unit 22.

このように、同時アクセスが発生するような場合には、読み出し先決定回路26は、フリップフロップ41−1が記憶するライトデータW_DATAを、記憶部22全体の出力データ(リードデータR_DATA)として外部に出力する。その結果、記憶部22は、期待通りのデータ出力を行える。   In this way, when simultaneous access occurs, the read destination determination circuit 26 externally uses the write data W_DATA stored in the flip-flop 41-1 as output data (read data R_DATA) of the entire storage unit 22. Output. As a result, the storage unit 22 can output data as expected.

第1の実施形態に係るデータ出力方法をまとめると図9に示すフローチャートのとおりである。   The data output method according to the first embodiment is summarized as a flowchart shown in FIG.

ステップS01において、少なくともライトアドレスW_ADD及びリードアドレスR_ADDに応じて、RAMコア31から読み出されたリードデータRAM_OUT及びメモリアレイ24をなす複数のフリップフロップ41のいずれかに記憶されたデータのいずれかを外部に出力するデータとして決定する。ステップS02において、外部に出力すると決定されたデータを選択的に出力する。   In step S01, at least according to the write address W_ADD and the read address R_ADD, the read data RAM_OUT read from the RAM core 31 and any of the data stored in any of the plurality of flip-flops 41 forming the memory array 24 are obtained. Determined as data to be output to the outside. In step S02, the data determined to be output to the outside is selectively output.

以上のように、第1の実施形態に係る記憶部22は、ライトアドレスW_ADDとリードアドレスR_ADDとの間の関係に基づいて、RAMコア31が出力するデータ及びメモリアレイ24が出力するデータのいずれかを、リードデータR_DATAとして出力するか選択する。その結果、記憶部22は、ライトアドレスW_ADDとリードアドレスR_ADDが一致するような場合も含め、これらのアドレス値がどのような値であっても、リード動作の1クロック後にライト動作が可能となる。即ち、第1の実施形態に係る記憶部22は、ライトアドレスW_ADDとリードアドレスR_ADDが一致する場合であっても、ライトされたデータを確実にリードすることが可能である。また、フリップフロップ33〜37は各種データをリタイミングする手段として機能する。そのため、例えば、パケットを100Gbpsといった速度にて処理する必要がある通信装置1の演算モジュール11に記憶部22を組み込むことで、パケットを1クロックで処理することが可能となる。   As described above, the storage unit 22 according to the first embodiment uses any one of the data output from the RAM core 31 and the data output from the memory array 24 based on the relationship between the write address W_ADD and the read address R_ADD. To output as read data R_DATA. As a result, the storage unit 22 can perform the write operation one clock after the read operation, regardless of the value of these address values, including the case where the write address W_ADD and the read address R_ADD coincide. . That is, the storage unit 22 according to the first embodiment can reliably read the written data even when the write address W_ADD matches the read address R_ADD. The flip-flops 33 to 37 function as means for retiming various data. Therefore, for example, by incorporating the storage unit 22 in the arithmetic module 11 of the communication apparatus 1 that needs to process a packet at a speed of 100 Gbps, the packet can be processed in one clock.

また、演算モジュール11をFPGAにて実現する場合に、フリップフロップに係るリソースを記憶装置として使用する必要がなくなり、汎用的なFPGAのリソースを有効活用できる。即ち、安価な通信装置1を短期間で開発することが可能となる。   Further, when the arithmetic module 11 is realized by an FPGA, it is not necessary to use a resource related to the flip-flop as a storage device, and a general-purpose FPGA resource can be effectively used. That is, an inexpensive communication device 1 can be developed in a short period of time.

ここで、一部のFPGAには、同時アクセスが発生した場合に、ライトデータを直接リードできる機能を有するものがある。このようなFPGAを使用すれば、同時アクセスに伴う問題は生じない。しかし、このような機能は、ごく一部のFPGAメーカから供給されるFPGAに限り実装されているものあり一般的ではない。つまり、大半のFPGAにはこのような機能は実装されておらず、上記のような例外的且つ特殊な機能を有するFPGAを採用することはできない。   Here, some FPGAs have a function of directly reading write data when simultaneous access occurs. If such an FPGA is used, problems associated with simultaneous access do not occur. However, such a function is implemented only in an FPGA supplied from a few FPGA manufacturers, and is not general. That is, most of the FPGAs do not have such a function, and it is not possible to adopt an FPGA having the above exceptional and special functions.

また、100Gbpsといった処理容量が要求される通信装置1では、例えば、312.5MHzにて1クロック処理が必要となるため、ライトデータW_DATAに対するECCが適用できないという問題がある。FPGAにおいて、高速なECC回路を実現するためには、予めFPGAにハードマクロとして組み込まれたECC回路を用いるのが通常である。しかし、ハードマクロに係るECC回路を組み込みつつ、同時アクセス時の出力を保証する記憶装置は存在しないのが現状である。つまり、上記の特殊機能(同時アクセスが発生した場合には、ライトデータを直接リードできる機能)が実装されたFPGAであっても、ECC機能を有効にすることができないという問題がある。即ち、1クロック処理が要求されるような記憶装置では、ECC回路の適用ができずソフトエラーによるRAMのビット反転エラーを回避できない。その結果、信頼性の高い通信装置の実現が困難とある。   In addition, in the communication device 1 that requires a processing capacity of 100 Gbps, for example, one clock processing is required at 312.5 MHz, so that there is a problem that ECC for the write data W_DATA cannot be applied. In an FPGA, in order to realize a high-speed ECC circuit, it is usual to use an ECC circuit that is previously incorporated in the FPGA as a hard macro. However, there is currently no storage device that guarantees output during simultaneous access while incorporating an ECC circuit related to a hard macro. That is, there is a problem that the ECC function cannot be validated even with an FPGA in which the above-described special function (a function that can directly read the write data when simultaneous access occurs) is mounted. That is, in a storage device that requires one clock processing, the ECC circuit cannot be applied, and a RAM bit inversion error due to a soft error cannot be avoided. As a result, it is difficult to realize a highly reliable communication device.

一方、第1の実施形態に係る記憶部22は、同時アクセス時にはメモリアレイ24のフリップフロップ41−1に格納されたライトデータW_DATAをリードデータR_DATAとして出力するためソフトエラーによるビット反転エラーは生じない。また、RAMコア31に格納されるライトデータW_DATAには、ECC回路(ECCエンコーダ32とECCデコーダ38)による誤り訂正が適用されるため、ソフトエラーによるビット反転エラーは必要に応じて訂正される。その結果、記憶部22を用いる通信装置1の信頼性(品質)を向上させることができる。   On the other hand, since the storage unit 22 according to the first embodiment outputs the write data W_DATA stored in the flip-flop 41-1 of the memory array 24 as read data R_DATA during simultaneous access, no bit inversion error due to a soft error occurs. . Further, since error correction by the ECC circuit (the ECC encoder 32 and the ECC decoder 38) is applied to the write data W_DATA stored in the RAM core 31, a bit inversion error due to a soft error is corrected as necessary. As a result, the reliability (quality) of the communication device 1 using the storage unit 22 can be improved.

なお、第1の実施形態にて説明した記憶部22の構成及び動作は例示であって、種々の変形が可能である。以下、第1の実施形態の変形例について説明する。   The configuration and operation of the storage unit 22 described in the first embodiment are examples, and various modifications can be made. Hereinafter, modifications of the first embodiment will be described.

[変形例1]
図10は、第1の変形例に係る記憶部22aの内部構成の一例を示す図である。図4に示す記憶部22と図10に示す記憶部22aの相違点は、記憶回路23の内部にフリップフロップ61〜63が追加されている点である。即ち、図10に示す記憶部22aでは、RAMコア31における書き込み側のリタイミング段数が2段となっている。
[Modification 1]
FIG. 10 is a diagram illustrating an example of an internal configuration of the storage unit 22a according to the first modification. The difference between the storage unit 22 shown in FIG. 4 and the storage unit 22 a shown in FIG. 10 is that flip-flops 61 to 63 are added inside the storage circuit 23. That is, in the storage unit 22a shown in FIG. 10, the number of retiming stages on the write side in the RAM core 31 is two.

RAMコア31の書き込み側のリタイミング段数が2段になっているため、ライトアドレスW_ADDやライトデータW_DATAは2クロック遅延してRAMコア31に供給される(例えば、図11のT01〜T03参照)。また、例えば、図12の時刻T15、T16を参照すると、同時アクセスが発生した場合であっても、期待通りのデータが記憶部22aから出力されているのが理解される。   Since the number of retiming stages on the writing side of the RAM core 31 is two, the write address W_ADD and the write data W_DATA are supplied to the RAM core 31 with a delay of two clocks (see, for example, T01 to T03 in FIG. 11). . For example, referring to times T15 and T16 in FIG. 12, it can be understood that expected data is output from the storage unit 22a even when simultaneous access occurs.

[変形例2]
図13は、第2の変形例に係る記憶部22bの内部構成の一例を示す図である。図10に示す記憶部22aと図13に示す記憶部22bの相違点は、RAMコア31のリードデータ出力端子D_OUT_RAMとECCデコーダ38の間に挿入されるフリップフロップ64と、リードアドレスR_ADDを1クロック遅延させるフリップフロップ65と、が追加されている点である。
[Modification 2]
FIG. 13 is a diagram illustrating an example of an internal configuration of the storage unit 22b according to the second modification. The difference between the storage unit 22a shown in FIG. 10 and the storage unit 22b shown in FIG. 13 is that the flip-flop 64 inserted between the read data output terminal D_OUT_RAM of the RAM core 31 and the ECC decoder 38 and the read address R_ADD are set to one clock. A flip-flop 65 for delaying is added.

記憶部22bは、フリップフロップ64が追加されることで、読み出し側のデータ出力をリタイミングする。また、RAMコア31から出力されるリードデータRAM_OUTと、記憶部22bの外部(演算部21)から供給されるリードアドレスR_ADDと、の間の整合を図るためフリップフロップ65が追加される。なお、図13以降の図面において、フリップフロップ65により1クロック遅延されるリードアドレスR_ADDをリードアドレスR_ADD_1Tと表記する。   The storage unit 22b retimes the data output on the reading side by adding the flip-flop 64. In addition, a flip-flop 65 is added to achieve matching between the read data RAM_OUT output from the RAM core 31 and the read address R_ADD supplied from the outside of the storage unit 22b (arithmetic unit 21). In FIG. 13 and subsequent drawings, the read address R_ADD delayed by one clock by the flip-flop 65 is represented as a read address R_ADD_1T.

図14を参照すると、例えば、時刻T09にてRAMコア31から読み出されたデータは、フリップフロップ64により1クロック遅延され、時刻T10にてリードデータRAM_OUTとして出力される。   Referring to FIG. 14, for example, data read from the RAM core 31 at time T09 is delayed by one clock by the flip-flop 64, and output as read data RAM_OUT at time T10.

また、図15を参照すると、例えば、時刻T08にて演算部21から供給されたリードアドレスR_ADDは、フリップフロップ65により1クロック遅延され、時刻T09にてリードアドレスR_ADD_1Tとして読み出し先決定回路26に供給される。   Referring to FIG. 15, for example, the read address R_ADD supplied from the computing unit 21 at time T08 is delayed by one clock by the flip-flop 65 and supplied to the read destination determination circuit 26 as the read address R_ADD_1T at time T09. Is done.

さらに、例えば、図15の時刻T15にて、ライトアドレスW_ADDとリードアドレスR_ADDが一致しているため、同時アクセスが発生している。この場合、時刻T15のリードアドレスR_ADD_1Tのアドレス値と、ライトアドレスW_ADDのアドレス値が一致するので、読み出し先決定回路26の論理積回路52−1は、Hレベルを出力する。その結果、選択信号出力回路54の入力端子IN_1にHレベルが供給される。入力端子IN_1がHレベルであるので、選択信号出力回路54は、選択回路25がポート1を選択するように選択信号SELを出力する。時刻T16にて、選択信号SELが1クロック遅延された選択信号SEL_1Tが、選択回路25に供給され、ポート1に供給されているデータ「1d」が出力される。   Further, for example, at time T15 in FIG. 15, the write address W_ADD and the read address R_ADD coincide with each other, so that simultaneous access occurs. In this case, since the address value of the read address R_ADD_1T at time T15 matches the address value of the write address W_ADD, the AND circuit 52-1 of the read destination determination circuit 26 outputs the H level. As a result, the H level is supplied to the input terminal IN_1 of the selection signal output circuit 54. Since the input terminal IN_1 is at the H level, the selection signal output circuit 54 outputs the selection signal SEL so that the selection circuit 25 selects the port 1. At time T16, the selection signal SEL_1T obtained by delaying the selection signal SEL by one clock is supplied to the selection circuit 25, and the data “1d” supplied to the port 1 is output.

このように、第2の変形例に係る記憶部22bであっても、同時アクセスが発生した場合には、期待通りのデータが出力される。   Thus, even in the storage unit 22b according to the second modified example, when simultaneous access occurs, data as expected is output.

[変形例3]
図16は、第3の変形例に係る記憶部22cの内部構成の一例を示す図である。図13に示す記憶部22bと図16に示す記憶部22cの相違点は、RAMコア31の読み出し側におけるデータ出力に対するリタイミングを2段実施するためのフリップフロップ66、67が追加されている点である。なお、図16以降の図面において、フリップフロップ65及び66により2クロック遅延されるリードアドレスR_ADDをリードアドレスR_ADD_2Tと表記する。
[Modification 3]
FIG. 16 is a diagram illustrating an example of an internal configuration of the storage unit 22c according to the third modification. The difference between the storage unit 22b shown in FIG. 13 and the storage unit 22c shown in FIG. 16 is that flip-flops 66 and 67 for performing two stages of retiming for data output on the read side of the RAM core 31 are added. It is. In FIG. 16 and subsequent drawings, the read address R_ADD delayed by two clocks by the flip-flops 65 and 66 is referred to as a read address R_ADD_2T.

図17の時刻T08〜T10を参照すると、RAMコア31から読み出されたデータは、フリップフロップ64及び67により2クロック遅延され、リードデータRAM_OUTとして出力される。また、図18の時刻T07〜T09を参照すると、リードアドレスR_ADDは、フリップフロップ65及び66により2クロック遅延され、リードアドレスR_ADD_2Tとして読み出し先決定回路26に供給される。また、例えば、図18の時刻T15、T16を参照すると、記憶部22cに同時アクセスが発生した場合であっても、期待通りのデータが記憶部22cから出力されているのが理解される。   Referring to times T08 to T10 in FIG. 17, the data read from the RAM core 31 is delayed by two clocks by the flip-flops 64 and 67 and output as read data RAM_OUT. Referring to the times T07 to T09 in FIG. 18, the read address R_ADD is delayed by two clocks by the flip-flops 65 and 66 and supplied to the read destination determination circuit 26 as the read address R_ADD_2T. Further, for example, referring to times T15 and T16 in FIG. 18, it is understood that expected data is output from the storage unit 22c even when simultaneous access to the storage unit 22c occurs.

以上、第1〜第3の変形例にて説明したように、メモリアレイ24に含まれるフリップフロップの段数を4段とする場合には、RAMコア31の書き込み側のリタイミングの段数を2段、読み出し側のリタイミングの段数を2段とすることができる。さらに、リタイミングの段数を増やす場合には、メモリアレイ24に含まれるフリップフロップの段数を増やし、読み出し先決定回路26の構成を増加したフリップフロップの段数に適応させればよい。   As described above in the first to third modifications, when the number of flip-flops included in the memory array 24 is four, the number of retiming stages on the write side of the RAM core 31 is two. The number of retiming stages on the reading side can be two. Further, when the number of retiming stages is increased, the number of flip-flop stages included in the memory array 24 may be increased to adapt the configuration of the read destination determination circuit 26 to the increased number of flip-flop stages.

[変形例4]
図19は、第4の変形例に係る記憶部22dの内部構成の一例を示す図である。図16に示す記憶部22cと図19に示す記憶部22dの相違点は、記憶回路23の入力端子にフリップフロップ68が接続されている点である。
[Modification 4]
FIG. 19 is a diagram illustrating an example of the internal configuration of the storage unit 22d according to the fourth modification. A difference between the storage unit 22 c illustrated in FIG. 16 and the storage unit 22 d illustrated in FIG. 19 is that a flip-flop 68 is connected to an input terminal of the storage circuit 23.

RAMコア31は、FPGAのハードマクロとして実装されているので、FPGAチップ上での物理的位置が予め定まっている。また、演算部21にて使用される加算器もハードマクロとして実装されているので、演算部21と記憶部22の間の距離が短くなるとは限らない。つまり、演算部21(加算器)と記憶部22(RAMコア31)の間の距離が長くなる可能性があり、データの送受信に問題が生じることがある。   Since the RAM core 31 is mounted as an FPGA hard macro, a physical position on the FPGA chip is determined in advance. Further, since the adder used in the calculation unit 21 is also implemented as a hard macro, the distance between the calculation unit 21 and the storage unit 22 is not necessarily shortened. That is, there is a possibility that the distance between the calculation unit 21 (adder) and the storage unit 22 (RAM core 31) may be long, which may cause a problem in data transmission / reception.

そこで、第4の変形例に係る記憶部22dのように、記憶回路23の前段にフリップフロップ68を追加することで、ライトデータW_DATAの波形を整形する。その結果、例えば、システムクロックが312.5MHzのように高速、且つ、演算部21と記憶部22の間が離れている場合であっても、確実なデータの授受が実現できる。   Therefore, the waveform of the write data W_DATA is shaped by adding a flip-flop 68 in the previous stage of the storage circuit 23 as in the storage unit 22d according to the fourth modification. As a result, for example, even when the system clock is as high as 312.5 MHz and the operation unit 21 and the storage unit 22 are separated, reliable data transfer can be realized.

また、フリップフロップ68の追加は、メモリアレイ24には直列接続された5個のフリップフロップが含まれることと等価である。従って、選択回路25のポート数及び読み出し先決定回路26が出力する選択信号SELを適宜変更し、記憶部22dに同時アクセスが生じた場合には、フリップフロップ68が記憶するデータが、リードデータR_DATAとして出力されるように構成する。   The addition of the flip-flop 68 is equivalent to the memory array 24 including five flip-flops connected in series. Accordingly, when the number of ports of the selection circuit 25 and the selection signal SEL output from the read destination determination circuit 26 are appropriately changed and simultaneous access to the storage unit 22d occurs, the data stored in the flip-flop 68 is read data R_DATA. To be output as

[変形例5]
第1の実施形態及び第1〜第4の変形例に係る記憶装置では、メモリアレイ24に含まれるフリップフロップの個数を4として説明した。しかし、フリップフロップの個数は4に限定されない。例えば、図20に示すように、メモリアレイ24に含まれるフリップフロップの数は1でもよい。
[Modification 5]
In the storage devices according to the first embodiment and the first to fourth modifications, the number of flip-flops included in the memory array 24 is described as four. However, the number of flip-flops is not limited to four. For example, as shown in FIG. 20, the number of flip-flops included in the memory array 24 may be one.

この場合には、読み出し先決定回路26は、図21(a)に示すように構成できる。図21(a)を参照すると、読み出し先決定回路26は、同時アクセスが発生した場合(ライトアドレスW_ADDとリードアドレスR_ADDが一致する場合)に、選択回路25のポート1を選択するように選択信号SELを出力する。選択信号出力回路54の動作を真理値表として記載すると、図21(b)のとおりとなる。   In this case, the read destination determination circuit 26 can be configured as shown in FIG. Referring to FIG. 21A, the read destination determination circuit 26 selects the selection signal so as to select the port 1 of the selection circuit 25 when simultaneous access occurs (when the write address W_ADD and the read address R_ADD match). SEL is output. The operation of the selection signal output circuit 54 is described as a truth table as shown in FIG.

第5の変形例に係る記憶部22eは、高速なシステムクロックによる動作が不要ではあるが、同時アクセスに対応したい場合に好適である。記憶部22eでは、メモリアレイ24に1個のフリップフロップ41−1が含まれるだけなので、記憶回路23の内部にリタイミング用のフリップフロップを追加することができない。しかし、演算モジュール11を実現するFPGAを高速に動作させる必要が無い場合には、図20に示す記憶部22eの構成で足り、メモリアレイ24と読み出し先決定回路26の構成が簡略化できるという利点がある。   The storage unit 22e according to the fifth modified example is suitable for the case where it is desired to support simultaneous access, although the operation by the high-speed system clock is unnecessary. In the storage unit 22e, since the memory array 24 includes only one flip-flop 41-1, a retiming flip-flop cannot be added inside the storage circuit 23. However, when it is not necessary to operate the FPGA for realizing the arithmetic module 11 at high speed, the configuration of the storage unit 22e shown in FIG. 20 is sufficient, and the configuration of the memory array 24 and the read destination determination circuit 26 can be simplified. There is.

上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。   A part or all of the above embodiments can be described as in the following supplementary notes, but is not limited thereto.

[付記1]
ライトアドレス、ライトデータ及びリードアドレスを受け付け、データの書き込みとデータの読み出しの並列動作が可能な第1の記憶部と、
直列接続された複数の記憶素子からなる記憶部であって、前記ライトデータを受け付けると共に、前記第1の記憶部と並列接続された第2の記憶部と、
少なくとも前記ライトアドレス及び前記リードアドレスに応じて、前記第1の記憶部から読み出されたリードデータ及び前記第2の記憶部をなす前記複数の記憶素子のいずれかに記憶されたデータのいずれかを外部に出力するデータとして決定する決定部と、
前記決定部により外部に出力すると決定されたデータを選択的に出力する選択部と、
を備える半導体装置。
[付記2]
前記第1の記憶部は、ライトイネーブルとリードイネーブルを受け付け、
前記選択部は、前記ライトアドレス、前記リードアドレス、前記ライトイネーブル及び前記リードイネーブルに応じて、外部に出力するデータを選択する、付記1の半導体装置。
[付記3]
前記第1の記憶部に供給される前記ライトデータを保持する第1の保持部と、
前記第1の記憶部に供給される前記ライトアドレスを保持する第2の保持部と、
前記第1の記憶部に供給される前記ライトイネーブルを保持する第3の保持部と、
前記第1の記憶部に供給される前記リードアドレスを保持する第4の保持部と、
前記第1の記憶部に供給される前記リードイネーブルを保持する第5の保持部と、
をさらに備える付記2の半導体装置。
[付記4]
前記決定部は、前記外部に出力するデータを示す選択信号を、前記選択部に向けて出力し、
前記選択信号を保持する第6の保持部をさらに備える、付記3の半導体装置。
[付記5]
前記ライトデータから誤り訂正符号を生成する誤り訂正符号化回路と、
前記誤り訂正符号に応じて、前記第1の記憶部から読み出されたリードデータを訂正する誤り訂正回路と、
をさらに備える、付記1乃至4のいずれか一に記載の半導体装置。
[付記6]
前記決定部は、前記リードアドレスと前記ライトアドレスが一致する際のシステムクロックの遅延数に応じて、前記外部に出力するデータを決定する付記1乃至5のいずれか一に記載の半導体装置。
[付記7]
前記決定部は、
前記ライトアドレスと前記リードアドレスが一致する場合には、前記第2の記憶部をなす複数の記憶素子のうち、初段の記憶素子が記憶するデータを前記外部に出力するデータとして決定し、
前記システムクロックの遅延数が、前記第2の記憶部をなす複数の記憶素子の数以上の場合には、前記第1の記憶部から読み出されたリードデータを前記外部に出力するデータとして決定する、付記6の半導体装置。
[付記8]
前記第1の保持部の前段に配置され、前記ライトデータを保持する第7の保持部と、
前記第2の保持部の前段に配置され、前記ライトアドレスを保持する第8の保持部と、
前記第3の保持部の前段に配置され、前記ライトイネーブルを保持する第9の保持部と、
をさらに備える、付記4の半導体装置。
[付記9]
前記第1の記憶部から読み出されたリードデータを保持する第10の保持部と、
前記決定部に供給される前記リードアドレスを保持する第11の保持部と、
をさらに備える、付記8の半導体装置。
[付記10]
前記第10の保持部の後段に配置され、前記第1の記憶部から読み出されたリードデータを保持する第12の保持部と、
前記第11の保持部の前段に配置され、前記リードアドレスを保持する第13の保持部と、
をさらに備える、付記9の半導体装置。
[付記11]
前記第7の保持部の前段に配置され、前記ライトデータを保持する第14の保持部をさらに備える、付記10の半導体装置。
[付記12]
ライトアドレス、ライトデータ及びリードアドレスを受け付け、データの書き込みとデータの読み出しの並列動作が可能な第1の記憶部と、直列接続された複数の記憶素子からなる記憶部であって、前記ライトデータを受け付けると共に、前記第1の記憶部と並列接続された第2の記憶部と、を含む記憶装置からのデータ出力方法であって、
少なくとも前記ライトアドレス及び前記リードアドレスに応じて、前記第1の記憶部から読み出されたリードデータ及び前記第2の記憶部をなす前記複数の記憶素子のいずれかに記憶されたデータのいずれかを外部に出力するデータとして決定するステップと、
前記外部に出力すると決定されたデータを選択的に出力するステップと、
を含む、データ出力方法。
なお、付記12の形態は、付記1の形態と同様に、付記2の形態〜付記11の形態に展開することが可能である。
[Appendix 1]
A first storage unit that accepts a write address, write data, and a read address, and is capable of parallel operation of writing data and reading data;
A storage unit composed of a plurality of storage elements connected in series, the second storage unit receiving the write data and connected in parallel to the first storage unit;
Any one of the read data read from the first storage unit and the data stored in any of the plurality of storage elements forming the second storage unit according to at least the write address and the read address A determination unit that determines the data to be output to the outside,
A selection unit that selectively outputs data determined to be output to the outside by the determination unit;
A semiconductor device comprising:
[Appendix 2]
The first storage unit accepts a write enable and a read enable,
The semiconductor device according to appendix 1, wherein the selection unit selects data to be output to the outside according to the write address, the read address, the write enable, and the read enable.
[Appendix 3]
A first holding unit for holding the write data supplied to the first storage unit;
A second holding unit for holding the write address supplied to the first storage unit;
A third holding unit for holding the write enable supplied to the first storage unit;
A fourth holding unit for holding the read address supplied to the first storage unit;
A fifth holding unit for holding the read enable supplied to the first storage unit;
The semiconductor device according to appendix 2, further comprising:
[Appendix 4]
The determination unit outputs a selection signal indicating data to be output to the outside toward the selection unit,
The semiconductor device according to appendix 3, further comprising a sixth holding unit that holds the selection signal.
[Appendix 5]
An error correction encoding circuit for generating an error correction code from the write data;
An error correction circuit for correcting read data read from the first storage unit according to the error correction code;
The semiconductor device according to any one of appendices 1 to 4, further comprising:
[Appendix 6]
The semiconductor device according to any one of appendices 1 to 5, wherein the determination unit determines data to be output to the outside according to a delay number of a system clock when the read address matches the write address.
[Appendix 7]
The determination unit
When the write address and the read address match, the data stored in the first storage element among the plurality of storage elements forming the second storage unit is determined as data to be output to the outside,
When the delay number of the system clock is equal to or greater than the number of the plurality of storage elements forming the second storage unit, the read data read from the first storage unit is determined as data to be output to the outside The semiconductor device according to appendix 6.
[Appendix 8]
A seventh holding unit that is arranged in front of the first holding unit and holds the write data;
An eighth holding unit that is arranged in front of the second holding unit and holds the write address;
A ninth holding unit that is arranged in front of the third holding unit and holds the write enable;
The semiconductor device according to appendix 4, further comprising:
[Appendix 9]
A tenth holding unit for holding read data read from the first storage unit;
An eleventh holding unit for holding the read address supplied to the determination unit;
The semiconductor device according to appendix 8, further comprising:
[Appendix 10]
A twelfth holding unit that is arranged downstream of the tenth holding unit and holds read data read from the first storage unit;
A thirteenth holding unit that is arranged in front of the eleventh holding unit and holds the read address;
The semiconductor device according to appendix 9, further comprising:
[Appendix 11]
The semiconductor device according to appendix 10, further comprising a fourteenth holding unit that is arranged in front of the seventh holding unit and holds the write data.
[Appendix 12]
A first storage unit that accepts a write address, write data, and a read address, and that can perform a parallel operation of writing data and reading data; and a storage unit including a plurality of storage elements connected in series, the write data And a data output method from a storage device including a second storage unit connected in parallel with the first storage unit,
Any one of the read data read from the first storage unit and the data stored in any of the plurality of storage elements forming the second storage unit according to at least the write address and the read address Determining as data to be output to the outside,
Selectively outputting data determined to be output to the outside;
Including data output method.
Note that the form of Supplementary Note 12 can be developed into the form of Supplementary Note 2 to the form of Supplementary Note 11 as with the form of Supplementary Note 1.

なお、引用した上記の特許文献の開示は、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素(各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。   The disclosure of the cited patent document is incorporated herein by reference. Within the scope of the entire disclosure (including claims) of the present invention, the embodiments and examples can be changed and adjusted based on the basic technical concept. In addition, various combinations or selections of various disclosed elements (including each element in each claim, each element in each embodiment or example, each element in each drawing, etc.) within the scope of the entire disclosure of the present invention. Is possible. That is, the present invention of course includes various variations and modifications that could be made by those skilled in the art according to the entire disclosure including the claims and the technical idea. In particular, with respect to the numerical ranges described in this document, any numerical value or small range included in the range should be construed as being specifically described even if there is no specific description.

1 通信装置
10 通信モジュール
11 演算モジュール
21、82 演算部
22、22a〜22e 記憶部
23 記憶回路
24 メモリアレイ
25、84 選択回路
26 読み出し先決定回路
27、33〜37、41−1〜41−4、53−1〜53−6、61〜68、83 フリップフロップ(FF;Flip-Flop)
31 RAM(Random Access Memory)コア
32 ECCエンコーダ(ECC Encoder)
38 ECCデコーダ(ECC Decoder)
51−1〜51−4 アドレス比較回路
52−1〜52−4 論理積回路
54 選択信号出力回路
80−1〜80−n 積算カウント回路
81 グループ選択回路
100 半導体装置
101 第1の記憶部
102 第2の記憶部
103 決定部
104 選択部
DESCRIPTION OF SYMBOLS 1 Communication apparatus 10 Communication module 11 Calculation module 21, 82 Calculation part 22, 22a-22e Storage part 23 Storage circuit 24 Memory array 25, 84 Selection circuit 26 Reading destination determination circuit 27, 33-37, 41-1 to 41-4 53-1-53-6, 61-68, 83 Flip-flop (FF)
31 RAM (Random Access Memory) core 32 ECC encoder (ECC Encoder)
38 ECC Decoder
51-1 to 51-4 Address comparison circuit 52-1 to 52-4 AND circuit 54 selection signal output circuit 80-1 to 80-n integration count circuit 81 group selection circuit 100 semiconductor device 101 first storage unit 102 first Two storage units 103 Determination unit 104 Selection unit

Claims (10)

ライトアドレス、ライトデータ及びリードアドレスを受け付け、データの書き込みとデータの読み出しの並列動作が可能な第1の記憶部と、
直列接続された複数の記憶素子からなる記憶部であって、前記ライトデータを受け付けると共に、前記第1の記憶部と並列接続された第2の記憶部と、
少なくとも前記ライトアドレス及び前記リードアドレスに応じて、前記第1の記憶部から読み出されたリードデータ及び前記第2の記憶部をなす前記複数の記憶素子のいずれかに記憶されたデータのいずれかを外部に出力するデータとして決定する決定部と、
前記決定部により外部に出力すると決定されたデータを選択的に出力する選択部と、
を備える半導体装置。
A first storage unit that accepts a write address, write data, and a read address, and is capable of parallel operation of writing data and reading data;
A storage unit composed of a plurality of storage elements connected in series, the second storage unit receiving the write data and connected in parallel to the first storage unit;
Any one of the read data read from the first storage unit and the data stored in any of the plurality of storage elements forming the second storage unit according to at least the write address and the read address A determination unit that determines the data to be output to the outside,
A selection unit that selectively outputs data determined to be output to the outside by the determination unit;
A semiconductor device comprising:
前記第1の記憶部は、ライトイネーブルとリードイネーブルを受け付け、
前記選択部は、前記ライトアドレス、前記リードアドレス、前記ライトイネーブル及び前記リードイネーブルに応じて、外部に出力するデータを選択する、請求項1の半導体装置。
The first storage unit accepts a write enable and a read enable,
The semiconductor device according to claim 1, wherein the selection unit selects data to be output to the outside according to the write address, the read address, the write enable, and the read enable.
前記第1の記憶部に供給される前記ライトデータを保持する第1の保持部と、
前記第1の記憶部に供給される前記ライトアドレスを保持する第2の保持部と、
前記第1の記憶部に供給される前記ライトイネーブルを保持する第3の保持部と、
前記第1の記憶部に供給される前記リードアドレスを保持する第4の保持部と、
前記第1の記憶部に供給される前記リードイネーブルを保持する第5の保持部と、
をさらに備える請求項2の半導体装置。
A first holding unit for holding the write data supplied to the first storage unit;
A second holding unit for holding the write address supplied to the first storage unit;
A third holding unit for holding the write enable supplied to the first storage unit;
A fourth holding unit for holding the read address supplied to the first storage unit;
A fifth holding unit for holding the read enable supplied to the first storage unit;
The semiconductor device according to claim 2, further comprising:
前記決定部は、前記外部に出力するデータを示す選択信号を、前記選択部に向けて出力し、
前記選択信号を保持する第6の保持部をさらに備える、請求項3の半導体装置。
The determination unit outputs a selection signal indicating data to be output to the outside toward the selection unit,
The semiconductor device according to claim 3, further comprising a sixth holding unit that holds the selection signal.
前記ライトデータから誤り訂正符号を生成する誤り訂正符号化回路と、
前記誤り訂正符号に応じて、前記第1の記憶部から読み出されたリードデータを訂正する誤り訂正回路と、
をさらに備える、請求項1乃至4のいずれか一項に記載の半導体装置。
An error correction encoding circuit for generating an error correction code from the write data;
An error correction circuit for correcting read data read from the first storage unit according to the error correction code;
The semiconductor device according to claim 1, further comprising:
前記決定部は、前記リードアドレスと前記ライトアドレスが一致する際のシステムクロックの遅延数に応じて、前記外部に出力するデータを決定する請求項1乃至5のいずれか一項に記載の半導体装置。   The semiconductor device according to claim 1, wherein the determination unit determines data to be output to the outside according to a delay number of a system clock when the read address and the write address match. . 前記決定部は、
前記ライトアドレスと前記リードアドレスが一致する場合には、前記第2の記憶部をなす複数の記憶素子のうち、初段の記憶素子が記憶するデータを前記外部に出力するデータとして決定し、
前記システムクロックの遅延数が、前記第2の記憶部をなす複数の記憶素子の数以上の場合には、前記第1の記憶部から読み出されたリードデータを前記外部に出力するデータとして決定する、請求項6の半導体装置。
The determination unit
When the write address and the read address match, the data stored in the first storage element among the plurality of storage elements forming the second storage unit is determined as data to be output to the outside,
When the delay number of the system clock is equal to or greater than the number of the plurality of storage elements forming the second storage unit, the read data read from the first storage unit is determined as data to be output to the outside The semiconductor device according to claim 6.
前記第1の保持部の前段に配置され、前記ライトデータを保持する第7の保持部と、
前記第2の保持部の前段に配置され、前記ライトアドレスを保持する第8の保持部と、
前記第3の保持部の前段に配置され、前記ライトイネーブルを保持する第9の保持部と、
をさらに備える、請求項4の半導体装置。
A seventh holding unit that is arranged in front of the first holding unit and holds the write data;
An eighth holding unit that is arranged in front of the second holding unit and holds the write address;
A ninth holding unit that is arranged in front of the third holding unit and holds the write enable;
The semiconductor device according to claim 4, further comprising:
前記第1の記憶部から読み出されたリードデータを保持する第10の保持部と、
前記決定部に供給される前記リードアドレスを保持する第11の保持部と、
をさらに備える、請求項8の半導体装置。
A tenth holding unit for holding read data read from the first storage unit;
An eleventh holding unit for holding the read address supplied to the determination unit;
The semiconductor device according to claim 8, further comprising:
ライトアドレス、ライトデータ及びリードアドレスを受け付け、データの書き込みとデータの読み出しの並列動作が可能な第1の記憶部と、直列接続された複数の記憶素子からなる記憶部であって、前記ライトデータを受け付けると共に、前記第1の記憶部と並列接続された第2の記憶部と、を含む記憶装置からのデータ出力方法であって、
少なくとも前記ライトアドレス及び前記リードアドレスに応じて、前記第1の記憶部から読み出されたリードデータ及び前記第2の記憶部をなす前記複数の記憶素子のいずれかに記憶されたデータのいずれかを外部に出力するデータとして決定するステップと、
前記外部に出力すると決定されたデータを選択的に出力するステップと、
を含む、データ出力方法。
A first storage unit that accepts a write address, write data, and a read address, and that can perform a parallel operation of writing data and reading data; and a storage unit including a plurality of storage elements connected in series, wherein the write data And a data output method from a storage device including a second storage unit connected in parallel with the first storage unit,
Any one of the read data read from the first storage unit and the data stored in any of the plurality of storage elements forming the second storage unit according to at least the write address and the read address Determining as data to be output to the outside,
Selectively outputting data determined to be output to the outside;
Including data output method.
JP2015011809A 2015-01-23 2015-01-23 Semiconductor device and data output method Active JP6366103B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015011809A JP6366103B2 (en) 2015-01-23 2015-01-23 Semiconductor device and data output method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015011809A JP6366103B2 (en) 2015-01-23 2015-01-23 Semiconductor device and data output method

Publications (2)

Publication Number Publication Date
JP2016136366A JP2016136366A (en) 2016-07-28
JP6366103B2 true JP6366103B2 (en) 2018-08-01

Family

ID=56512585

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015011809A Active JP6366103B2 (en) 2015-01-23 2015-01-23 Semiconductor device and data output method

Country Status (1)

Country Link
JP (1) JP6366103B2 (en)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3954159B2 (en) * 1997-06-11 2007-08-08 富士電機ホールディングス株式会社 Synchronous RAM access control circuit, data processor and control method thereof

Also Published As

Publication number Publication date
JP2016136366A (en) 2016-07-28

Similar Documents

Publication Publication Date Title
US10270447B2 (en) Apparatus for configurable interface and associated methods
US9384145B2 (en) Systems and methods for implementing dynamically configurable perfect hash tables
US7439763B1 (en) Scalable shared network memory switch for an FPGA
JP2008509583A (en) Method and apparatus for accessing data in message memory of communication module
JP2007166031A (en) Calculator for crc value
Krainyk et al. Hardware-oriented turbo-product codes decoder architecture
JP2008509463A (en) Method for storing messages in message memory and message memory
WO2020114469A1 (en) Sorting method and apparatus, and electronic device and medium
US9122411B2 (en) Signal order-preserving method and apparatus
US8667196B2 (en) Interconnect congestion reduction for memory-mapped peripherals
CN116569157A (en) Delayed communication over synchronous interface
JP6366103B2 (en) Semiconductor device and data output method
CN103312577B (en) A kind of method and device of processing MAC data
WO2012149775A1 (en) Data processing method and device
CN108984441B (en) Method and system for maintaining data transmission consistency
CN111221823A (en) Data processing method and device based on link management table
US7730276B1 (en) Striping of data into memory of a network data switch to prevent read and write collisions
CN105608033B (en) Semiconductor device and method of operating the same
US9893999B2 (en) Multiple datastreams processing by fragment-based timeslicing
US20160148658A1 (en) Electronic device and data transmission method thereof
US8193953B1 (en) Data width scaler circuitry
US10168989B1 (en) Adjustable empty threshold limit for a first-in-first-out (FIFO) circuit
US11726944B2 (en) Transaction layer circuit of PCIe and operation method thereof
JP2016042218A (en) Error detection device and error detection method
US9544229B2 (en) Packet processing apparatus and packet processing method

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20170630

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171204

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180605

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180628

R150 Certificate of patent or registration of utility model

Ref document number: 6366103

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150