|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
小弟CPLD初入門,有些語法請大俠們指正,先行謝過了! |
| 作者:sailorljg 欄目:EDA技術(shù) |
我的原程序如下面所示: MODULE TEST(en_data,all_data,en_flag,ledout,data9850,fqud,wclk,fq50,fq500k,outpwm,outbb,startch); input[3:0] en_data; //選通使能地址數(shù)據(jù) input[7:0] all_data; //8位數(shù)據(jù)輸入CPLD input en_flag; //單片機(jī)控制使能數(shù)據(jù)端口數(shù)據(jù)有效 input fq50; //單片機(jī)輸入重復(fù)頻率信號 input fq500k; //DDS輸入500K信號 OUTPUT ledout; //驅(qū)動發(fā)光管 OUTPUT[7:0] data9850; //輸出8位9850數(shù)據(jù) OUTPUT fqud; //9850 fqud控制` OUTPUT wclk; //9850 wclk控制 OUTPUT outpwm; //輸出PWM包絡(luò)信號 OUTPUT outbb; //輸出波包信號 OUTPUT[3:0] startch; //啟動通道數(shù)據(jù) reg[3:0] reg_en_data; //使能地址數(shù)據(jù)寄存器 reg[7:0] reg_data9850;//9850數(shù)據(jù)寄存器 reg reg_ledout; //led發(fā)光管輸出寄存器 reg reg_fqud; //9850 FQUD控制寄存器 reg reg_wclk; //9850 WCLK控制寄存器 reg[3:0]reg_plusnum; //需發(fā)射的脈沖個數(shù)數(shù)據(jù)寄存器 reg[3:0]reg_plusnumbak; //脈沖個數(shù)初始值 reg[3:0]reg_chstartdata; //啟動某通道數(shù)據(jù)寄存器 reg startstatic_flag; //啟動靜態(tài)標(biāo)志 reg reg_outpwm; reg reg_outbb; initial begin reg_ledout=0; reg_data9850=2'h00; reg_fqud=0; reg_wclk=0; reg_plusnum=1'h0; startstatic_flag=0; reg_outpwm=0; reg_outbb=0; reg_plusnumbak=1'h0; end always @(negedge en_flag) //接受單片機(jī)發(fā)送數(shù)據(jù)模塊 begin reg_en_data=en_data; case(reg_en_data) 4'b0001: reg_data9850<=all_data; //打入9850數(shù)據(jù) 4'b0010: reg_fqud<=all_data[0]; //打入9850控制信號 4'b0011: reg_wclk<=all_data[0]; 4'b0100: begin //打入脈沖個數(shù)數(shù)據(jù) reg_plusnum[0]<=all_data[0]; reg_plusnum[1]<=all_data[1]; reg_plusnum[2]<=all_data[2]; reg_plusnum[3]<=all_data[3]; //reg_plusnumbak<=reg_plusnum; end 4'b0101: begin //打入啟動通道數(shù)據(jù),并置標(biāo)志 reg_chstartdata[0]<=all_data[0]; reg_chstartdata[1]<=all_data[1]; reg_chstartdata[2]<=all_data[2]; reg_chstartdata[3]<=all_data[3]; |
| 2樓: | >>參與討論 |
| 作者: 吳明詩 于 2006/3/20 20:08:00 發(fā)布:
re 從第二項(xiàng),initial只能用在測試文件中,這里你可以這樣做 always @(negedge en_flag or rst) if(!rst) begin 開始賦0值,不過注意,同一個reg不能在兩個進(jìn)程中賦值。 說到這,第一項(xiàng)錯誤就是由此而來。 第四項(xiàng)以后所說的是因?yàn)閞eg-ledout沒有信號驅(qū)動,不信你就看看你的程序,找不到reg-ledout<=,,。 第七個,實(shí)時鐘的問題,你暫時可以不管。管不管,大部分情況下沒有影響。 |
|
| 3樓: | >>參與討論 |
| 作者: sailorljg 于 2006/3/20 21:07:00 發(fā)布:
老大您給我這一解釋真是突然地長進(jìn)不小啊!! 第一項(xiàng)中應(yīng)該是說同一個always語句中不能包含阻塞與非阻塞兩種賦值語句是吧? 您說initial只能用作測試文件,那在這里就沒有多大意義了呢!!我的一些寄存器和一些標(biāo)志想作初始化不就無法進(jìn)行了,如何能在程序運(yùn)行的開頭對一些變量作初始化呢?因?yàn)椴荒茉趦蓚always語句中同時對一個變量賦值,那么用always語句對變量初始化好像就不現(xiàn)實(shí)了是吧?因?yàn)檫@些變量在后面的操作中是避免不了要進(jìn)行賦值操作的! 還有,第五項(xiàng)與第六項(xiàng)我還是想不通,明明75腳是I/O口,為什么它會告訴我是GND呢? |
|
| 4樓: | >>參與討論 |
| 作者: sailorljg 于 2006/3/20 21:15:00 發(fā)布:
另外 還有,小弟剛接觸CPLD不久,大俠您能不能針對我上面的程序給我提出一些編寫不規(guī)范的地方來,給我引引路,感激不盡!!! |
|
| 5樓: | >>參與討論 |
| 作者: sailorljg 于 2006/3/21 17:28:00 發(fā)布:
快沉了,我自己頂一下吧! |
|
| 6樓: | >>參與討論 |
| 作者: andior 于 2006/3/24 10:07:00 發(fā)布:
ding ding......... |
|
| 7樓: | >>參與討論 |
| 作者: dengzhenli 于 2006/3/24 10:49:00 發(fā)布:
我比你還菜,但是頂一下 |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |