初心者を許して、私はこの質問を正しく聞く方法も知らない:Verilogでファイルを4つの部分に分割することはできますか?
私は現在メモリバンクにロードされているファイルを持っており、4つの異なるメモリバンクに分割したいと思っています。
私は非常にこのような行を使用して、いくつかのシステムVerilogコードがありますいくつかのメモリに(それは65536バイト長だと言う)hexファイルを読み込むこと
$readmemh(mem_file, memories.ram);
を。
今、私はこれを行うには
1つの明白な方法はにある...など、4つの部分にメモリを分割し、別のものに、ブロックに第二四半期の第一四半期(16384バイト)を入れたいですヘッドを使用したhexファイルを分割し、尾など、それを作るビルドプロセスの一環として、その後、シミュレーション時に、すべての新しいファイル名を渡し、そして
$readmemh(mem_file_1stbit, memories.ram1);
$readmemh(mem_file_2ndbit, memories.ram2);
$readmemh(mem_file_3rdbit, memories.ram3);
$readmemh(mem_file_4thbit, memories.ram4);
のようなステートメントを持っているしかし、それはカップルに思えますファームウェアのビルドプロセス、シミュレーションスクリプト、およびVerilogの設計は、私の好みにはあまりにも多すぎます。 (私の意見では)
A非常に優れたソリューションは、言うことのverilogコードを変更することと何かのように:
$readmemh(mem_file, memories.ram1, 0, (1<<14)-1);
$readmemh(mem_file, memories.ram2, (1<<14), (2<<14)-1);
$readmemh(mem_file, memories.ram3, (2<<14), (3<<14)-1);
$readmemh(mem_file, memories.ram4, (3<<14), (4<<14)-1);
しかし、それは、私はこの種のものをやらせますVerilogのようには見えません。
誰もが同じ結果を達成するきちんとした構造を考え出すことができますか?
4つのファイルを使用する場合、 'split' unixユーティリティは' head'と 'tail'よりもクリーンかもしれません。 – toolic
あなたの優先権は実際には特定のプログラムで動作します。私はザイリンクスISEが(データファイルがあなたが書き込んでいるRAMよりも多くの行を持っている場合は)不平を言いますが、Icarus Verilogではうまくいくはずです。 – Darhuuk