FPGA學(xué)習(xí)記錄
1 always語句里面是邊沿觸發(fā),,那么使用非阻塞性賦值<=;
如果是狀態(tài)觸發(fā),,那么使用阻塞性賦值=;
2 ISE9在win7上可以運(yùn)行,、仿真,,但是沒有下載線的驅(qū)動(dòng),,百度google也沒找到辦法,,后來咨詢了賣FPGA下載線的,,說ISE10以上支持win7,,于是下載了ISE13,,這次安裝驅(qū)動(dòng)成功了,。
3 ISE13里面做仿真的時(shí)候,初值怎么設(shè)定,?ise9中,,是可以用鼠標(biāo)拖來拖去設(shè)定初值的,ise13里面,,拖不動(dòng)了,,官方解釋,,從ise11.1開始,ise不再支持test bench waveform,,也就是不能在拖來拖去了,,Xilinx建議使用對于新項(xiàng)目使用hdl test bench;后記,,費(fèi)了好幾天勁,,終于寫成了一個(gè)VHDL test bench,可以用來仿真了,。
4 真正的FPGA的復(fù)位信號啥樣子,?
高低高
5 ISE13里面,vhdl test bench 中,,rst信號的寫法
process
begin
rst<='0';
wait for 100 ns;
rst<='1';
wait for 5000 ms;
end process;
6 紅色颶風(fēng) RCII - SP3S400的時(shí)鐘信號很惡心,,不像方波,像是正弦波
7 為什么總是(posedge clk or negedge rst),,其實(shí)(posedge clk)也可以,?
8 ise9.1里面, 聲明變量的時(shí)候不能直接賦值,,好像也不對,,怎么改都不行,,也不知出啥語法錯(cuò)誤了,,還是換回13.1吧,昨晚13.1總也不好用,,可能是因?yàn)闆]有給clk和rst信號分配管腳的問題,,剛才試了一下, 果然好使了,,就是因?yàn)闆]有分配管腳,,哇哈哈,困擾了好久了,,總算搞定
9 輸出變量改名后,,記得在ucf(用戶約束文件)文件中把以前的變量和對應(yīng)管腳刪掉;后記,,現(xiàn)在習(xí)慣于直接寫UCF文件了,,呵呵,更方便,。
10 always語句中,,只能檢測輸入信號的上升沿或下降沿
11 不要使用clk作為非系統(tǒng)時(shí)鐘變量名稱,否則在ise13中仿真時(shí)會(huì)自動(dòng)給定周期
12 20110709今天實(shí)現(xiàn)了DA,,本工程可以在自制FPGA+主板上,,驅(qū)動(dòng)DA輸出一個(gè)鋸齒波,,用示波器測得周期為100ms,DA輸入時(shí)鐘為80ns,,輸出數(shù)據(jù)大概1.5us一個(gè),,可以再提高;后記,,做了一個(gè)DA模塊,,支持的輸入時(shí)鐘為0~200M,很好用,;
13 ISE里面,,頂層原理圖包含下面幾個(gè)verilog文件的方式,還有verilog文件下面包含幾個(gè)verilog文件的方式,,有啥區(qū)別,,哪種更好;后記,,習(xí)慣于后者了,。
14 輸入時(shí)鐘是50Mhz時(shí),可以實(shí)現(xiàn)超過50M的主頻嗎,,貌似可以,,xilinx ->accocessory ->Core generator -> ;后記,,可以的,,使用DCM模塊;
15 input信號是不是不需要用reg來聲明???
16 三段式狀態(tài)機(jī)中,第二段也就是狀態(tài)轉(zhuǎn)移段的寫法,;后記,,狀態(tài)轉(zhuǎn)移要使用阻塞性賦值"=",凡是要判斷狀態(tài)的變量,,都要寫進(jìn) always語句,,例如 or drdypedge or flag or sqrt_rdy) begin
17 為什么使用DCM,怎么使用DCM,;后記Digital Clock Managers (DCMs)
18 ISE13.1成功Generate Programming File,,但是沒有BIT文件,原來是有bit文件而win7的搜索沒有找到,,手動(dòng)找到了
19 DA的時(shí)序很奇怪
20 AD的輸入數(shù)字也很奇怪
21 遇到一個(gè)奇怪的問題,,例化的程序里面,本來應(yīng)該在復(fù)位信號里面給狀態(tài)機(jī)賦初值,,總共3個(gè)例化程序,,有兩個(gè)可以賦初值,,一個(gè)不行,一直是xxxxxxxxxxxxxxx ,,找到問題了,,原來是低級錯(cuò)誤,時(shí)鐘寫錯(cuò)了,,應(yīng)該是clk_100M,,寫成了clk100M。
22 寫程序進(jìn)FPGA外部存儲器(本例中為xcf02s)的教程,,網(wǎng)絡(luò)上沒有ISE13.1的,;后記,自己蒙著找到了,;
23 2011/10/17實(shí)驗(yàn)證明,,開方是好用的
24 verilog語言寫完了,也好用,,我想知道里面具體是什么電路實(shí)現(xiàn)的,,有師弟說是用查找表實(shí)現(xiàn)的,把所有可能的結(jié)果都算出來,,存起來,,有啥輸入就給相應(yīng)的輸出
25 使用Xilinx IP核做39位數(shù)字開方需要20個(gè)延時(shí),這是在pipelining在maximum的情況下,,如果改成no pipelining,,那么只需要2個(gè)周期的延時(shí)
26 使用Xilinx IP核心做32位除法需要36個(gè)周期延時(shí),20位除法需要24個(gè)周期延時(shí),,25位除法需要29個(gè)延時(shí)
27 FPGA里面浮點(diǎn)數(shù)的定義,、運(yùn)算是啥樣子呢,,貌似很麻煩,,算了,不做除法或者浮點(diǎn)數(shù)乘法了
28 ISE13.1中,,CORDIC IP核做開放時(shí),,如果輸入為40位無符號整數(shù),那么輸出為21位,,應(yīng)該是20位才對啊,,仿真驗(yàn)證了一下,輸入為40個(gè)1,,或者說10個(gè)F即FFFFFFFFFF時(shí),,輸出為20個(gè)1,也就是20位,,那么為啥要做成多一位呢,?奇怪
29 verilog里面,,按位取反符號為"~",邏輯取反符號為"!"
30 verilog里面是可以定義有符號數(shù)和無符號數(shù)的,,所以不要糾結(jié)于補(bǔ)碼和原碼的問題了