硬體描述語言verilog早在實驗課上有所接觸,但這些天才開始慢慢嘗試把它實際用起來做一些事,總體感覺硬體描述語言與c語言相比雖然語法上還有比較相似的地方,但兩種程式設計過程中的思維方式完全不一致,fpga/cpld本身是要求開發者在開發過程中以硬體的對映將其描述出來,即便是自頂向下的設計方式中,你不必考慮硬體的細節,但綜合過程後你依然可以看到**所對應的硬體原理圖生成。
併發,程序,阻塞,非阻塞,佈線等概念更是顛覆我對於fpga的印象,從前初次接觸認為hdl語言很多餘的天真想法在逐漸學習的過程中全然消散,fpga的設計思想,讓我感覺踏入了一片從未涉足過的新大陸。
當然fpga也有自己的一些缺點,例如做個八位以上的除法都要寫個模組或者呼叫,論純運算能力,它比不上dsp甚至很多mcu。再就是學習門檻高,對於開發者的基礎要求高,等到設計的整個系統複雜了,一些小小的技巧性優化可以讓系統效能驟然提公升,關鍵是開發者首先需要了解可優化的點在**,這種層面就需要開發者對硬體有相當的了解,畢竟自頂向下只是fpga的一種設計方法。
扯得有點遠,對於我這種初學者,目前階段只是寫一點競賽開發的小實驗應用,對於fpga來說大材小用的東西,不足之處大家有望多多指出。
等精度測量法測訊號頻率:
`timescale 1ns / 1ps
////分頻式: f=50m/2n --->n=25m/f 我所用的fpga為50m 其他頻率將50m替換後也可按此式算
module gate (input clk,
input m,
input n,
output reg gateout,
output reg fmout,
output reg [15:0] realm,
output reg [15:0] realn
);reg [31:0] count1;
reg [31:0] count2;
reg gatebuf;
reg pregate;
reg fmbuf;
reg [15:0] tempm;
reg [15:0] tempn;
initial begin
pregate=0;
gateout=0;
fmout=0;
realm[15:0]=16'b0;
realn[15:0]=16'b0;
count1[31:0]=32'b0;
count2[31:0]=32'b0;
tempm[15:0]=16'b0;
tempn[15:0]=16'b0;
gatebuf=1'b0;
fmbuf=1'b0;
end
//分頻程序1:得到預置門1hz
always@(posedge clk)
begin
if (count1==32'd25000000)
begin
gatebuf<=~gatebuf;
pregate<=gatebuf;
count1<=0;
endelse
begin
count1<=count1+1;
end
end//分頻程序2:得到1mhz頻率作為基準頻率
always@(posedge clk) begin
if (count2==32'd49)
begin
fmbuf<=~fmbuf;
fmout<=fmbuf;
count2<=0;
endelse
begin
count2<=count2+1;
endend
//輸出 我在這裡輸給微控制器顯示在顯示屏上
always@(negedge gateout)
begin
realm[15:0]<=tempm[15:0];
realn[15:0]<=tempn[15:0];
end//狀態機
always@(posedge m)
begin
//精確門產生的狀態
if (pregate==1'b1&&gateout==1'b0)
begin
gateout<=1'b1;
tempm[15:0]<=tempm[15:0]+16'b1;
end//對m訊號輸入進行計數
else if (pregate==1'b1&&gateout==1'b1)
begin
tempm[15:0]<=tempm[15:0]+16'b1;
end//預置門已關閉?那麼精確門隨之關閉
else if (pregate==1'b0&&gateout==1'b1)
begin
gateout<=1'b0;
end//其餘的狀態不必理睬
else tempm[15:0]<=16'b0;
end//外部基準頻率輸入
always@(posedge n)
begin
if (gateout==1'b1) tempn[15:0]<=tempn[15:0]+16'b1;
else tempn<=0;
endendmodule
STM32實現等精度測頻
上一章介紹了利用stm32的tim的捕獲功能實現頻率測量的方法,但測量誤差受被測訊號頻率的影響,不適合測量頻率變化較大的 本章將介紹等精度測頻的方法以及stm32的實現。基本原理 首先看一張圖 傳統的測頻方式,閘門放時間是固定的,閘門時間內被測訊號的計數個數nx不一定是整數個,因此會有一定的誤差,且...
C cout的精度控制等常用函式
原以為precision的作用和printf中的控制精度 xlf是類似的作用,今天發現並不是 可見,precision的作用應該是 設定有效數字 從左邊第乙個非零的數算起,而printf的輸出位數指定是從小數點後開始算的。同時嘗試了cout的另外兩個常用方法,fill和width,填充 補0 和域寬...
測等保2 0 Oracle訪問控制
資訊系統只要執行,就會產生資料,產生資料就需要儲存,資料庫就是所有資訊系統所必需的,資料是資訊系統最重要的東西,所以資料庫的安全就是保障資料安全的重要屏障,現在市面上有許多資料庫產品,其中使用比較廣泛的就是oracle資料庫,今天我們就來講一講等保測評2.0中對oracle資料庫有哪些安全要求。or...