goma1109 の回答履歴
- VHDL ステートマシン
VHDLで記述したソースに対して、指摘を受けました。 『ステートマシンの状態をTYPEで宣言しているが、論理合成をしたときに、どのステートがどの値かが不明なため、実機デバッグをする際に、モニター出力した場合、ステートが確認できない。場合によっては、合成の都度、ステートのビット割付けが変わる。 ステートはconstant文を使って、設計者が値を割付けるべきである。』 ここでお聞きしたいのは、2点です。 (1)このご指摘は正しいのでしょうか。 (2)可能であれば、変更したくない(現状のままとしたい)のですが、どういった理由付けをすれば いいでしょうか。
- 締切済み
- その他(プログラミング・開発)
- ng3_zr4
- 回答数1
- Winpcapを使用してのプログラミング
現在C++でWinpcapを使用し、パケットのキャプチャをとるプログラムを作成したいと考えています。 http://d.hatena.ne.jp/d-kami/20080730を参考に作成しているのですが、 struct ether_headerがどこで宣言されているかわからず、使用することができません。 上記のサイトはおそらくLinux用だと思うのですが、Windows上で動かすためにはなんというヘッダファイルを読み込む必要があるのでしょうか?
- 締切済み
- C・C++・C#
- komattasann0111
- 回答数2
- VHDLでの周波数判定
VHDLで入力周波数の判定を考えています。 内容としては CLK_A(50MHz固定) CLK_B(65MHz,25MHz,0MHz(H or L)で変動) の入力があり、出力としては 65MHzのときは”L” 25MHz,0MHzのときは”H” という論理で何か良い方法は無いでしょうか?
- 締切済み
- その他(プログラミング・開発)
- AZKAI
- 回答数1
- SDカードの初期化について
CPU Cortex-M3のマイコンのSPIでSDカードのデータを読むファームを 作成しています。 SDカードの初期化について教えて下さい。 CMD0→CMD1という初期化をするとデータはキッチリ読めます。 ただ、デバイスサイズのリードが少し変です。 UARTでデバイスのサイズを表示させているのですが、 128MB,512MB,1GB,2GBの4種のSDカードで試してみたところ 128BMと1GBはちゃんとサイズ通りなんですが、512MBと2GBのサイズが 変です。(512MB→123MB 2GB→495MBと意味不明なサイズを読みます) CSDを表示させて計算してもやはり変です。 そこで、とりあえず上記は置いてSDHCにも対応したいということで 初期化ルーチンを変更しました。 ウェブ上で検索して下記のような初期化を組んでみました。 CMD0→CMD8→CMD58→CMD55→ACMD41→・・・ というような流れのものですが、 CMD55まではレスポンスも問題なく返ってきますが、 ACMD41のレスポンスが異常です。 0x00が返ってくるのが正解みたいですが、なぜか0x05が返ってきます。 何回繰り返しても変わりません。 考えられる原因をご教授いただけるとありがたいです。 ちなみに初期化時のクロックは394kHz 電源も波形で確認しましたが問題ありません。 よろしくお願いします。
- SDカードの初期化について
CPU Cortex-M3のマイコンのSPIでSDカードのデータを読むファームを 作成しています。 SDカードの初期化について教えて下さい。 CMD0→CMD1という初期化をするとデータはキッチリ読めます。 ただ、デバイスサイズのリードが少し変です。 UARTでデバイスのサイズを表示させているのですが、 128MB,512MB,1GB,2GBの4種のSDカードで試してみたところ 128BMと1GBはちゃんとサイズ通りなんですが、512MBと2GBのサイズが 変です。(512MB→123MB 2GB→495MBと意味不明なサイズを読みます) CSDを表示させて計算してもやはり変です。 そこで、とりあえず上記は置いてSDHCにも対応したいということで 初期化ルーチンを変更しました。 ウェブ上で検索して下記のような初期化を組んでみました。 CMD0→CMD8→CMD58→CMD55→ACMD41→・・・ というような流れのものですが、 CMD55まではレスポンスも問題なく返ってきますが、 ACMD41のレスポンスが異常です。 0x00が返ってくるのが正解みたいですが、なぜか0x05が返ってきます。 何回繰り返しても変わりません。 考えられる原因をご教授いただけるとありがたいです。 ちなみに初期化時のクロックは394kHz 電源も波形で確認しましたが問題ありません。 よろしくお願いします。
- C言語で信頼できる時間誤差
C言語で信頼できる時間誤差 C言語のQueryPerformanceCounterを用いて時間を計測するプログラムを作りました. このとき時間の間隔は必ずしも500m秒になりません. 原因としては, 1. Sleep関数に含まれる誤差 2. QueryPerformanceCounter関数に含まれる誤差 の2つが考えられると思っています. そこで,質問ですが,1および2の誤差ってどの程度なのでしょうか? また,その他に誤差が出現するとすれば,それは何でしょうか. ちなみに,PCはwindows XPでMicrosoft Viusal Stadio 2010で動作させ, その他のアプリケーションは開いていない状況下で実行しました. サンプルプログラムにより実行しましたが,何が原因なのでしょうか? **********【サンプルプログラム】********** #include <stdio.h> #include <windows.h> void main (void){ LARGE_INTEGER m_pCounterFreq; LARGE_INTEGER m_pBeforeCounter; LARGE_INTEGER ulCounter; double dPassageSec; double pre =0.0; int counter; printf("取得時間,取得時間間隔\n"); QueryPerformanceFrequency( &m_pCounterFreq ); QueryPerformanceCounter( &m_pBeforeCounter ); for(counter=0;;counter++){ QueryPerformanceCounter( &ulCounter ); dPassageSec = (double)(ulCounter.QuadPart - m_pBeforeCounter.QuadPart) / (double)m_pCounterFreq.QuadPart; if(dPassageSec >= 5.2) break; Sleep(500); printf("%-12f,%-12f\n", dPassageSec, dPassageSec-pre); pre = dPassageSec; } } **********【実行結果一例】********** 取得時間,取得時間間隔 0.000002 ,0.000002 0.486344 ,0.486342←14msも誤差がある 0.986095 ,0.499751 1.486106 ,0.500012 1.986102 ,0.499995 2.486100 ,0.499998 2.986116 ,0.500016 3.486089 ,0.499973 3.986090 ,0.500001←ほぼ500ms 4.486092 ,0.500002 4.986208 ,0.500117