久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
基于FPGA的信號發生器程序
[打印本頁]
作者:
陽光少年lhy
時間:
2018-12-5 23:03
標題:
基于FPGA的信號發生器程序
基于FPGA的信號發生器
三角波
//clk:時鐘信號
//reset:復位信號
//triangle_out:三角波輸出
module triangle(clk,reset,triangle_out);
input clk,reset;
output[7:0] triangle_out;
reg[7:0] triangle_out;
reg[7:0] num; //計數器
reg reg_1; //加減控制器
always@(posedge clk or posedge rest)
begin
if(reset)
num<=0; //當復位信號為1時輸出為0
else if(reg_1==0)
begin
if(num==8’b11111000)
begin
num<=255;
reg_1<=1; //加至最大值,開始進行減法
end
else
num<=num+8; //進行加8運算,取出32個點
end
else if(num==8’b00000111)
begin
num<=0;
reg_1<=0; //準備進行加法
end
else
begin
num<=num-8; //進行減8運算,需要取出32個點
end
end
always@(num)
begin
triangle_out<=num;//將取出的點輸出,即可實現三角波
end
endmodule
正弦波
//clk:時鐘信號
//reset:復位信號
//sin_out:正弦波輸出
Module sin(clk,reset,sin_out);
Input clk,reset;
output[7:0]sin_out;
reg[7:0]sin_out;
reg[6:0]num;
always@(posedge clk or posedge reset)
begin
if(reset)
sin_out<=0;
else if(num==63) //共需要64個點
num<=0;
else
num<=num+1;
case(num) //每個點一一對應的數據
0:sin_out<=255;
1:sin_out<=254;
2:sin_out<=252;
3:sin_out <=249;
4:sin_out <=245;
5:sin_out<= 239;
6:sin_out <= 23;
7:sin_out<= 225;
8:sin_out<=217;
9:sin_ out <=207;
10:sin out<=197;
11:sin out<= 186;
12:sin out <=174;
13:sin_out<=162;
14:sin_out<=150;
15:sin_out<=137;
16:sin_out<=124;
17:sin_out<=112;
18:sin_out<=99;
19:sin_out<=87;
20:sin_out<=75;
21:sin_out<=64;
22:sin_out<=53;
23:sin_out<=43;
24:sin_out<=34;
25:sin_out<=26
26:sin_out<=19;
27:sin_out<=13;
28:sin_out<=8;
29:sin_out<=4;
30:sin_out<=1;
31:sin_out<=0;
32:sin_out<=0;
33:sin_out<=1;
34:sin_out<=4;
35:sin_out<=8;
36:sin_out<=13;
37:sin_out<=19;
38:sin_out<=26;
39:sin_out<=34;
40:sin_out<=43;
41:sin_out<=53;
42:sin_out<=64;
43:sin_out<=75;
44:sin_out<=87;
45:sin_out<=99;
46:sin_out<=112;
47:sin_out<=124;
48:sin_out<=137;
49:sin_out<=150;
50:sin_out<=l62;
51:sin_out<=174;
52:sin_out<=186;
53:sin_out<=197;
54:sin_out<=207;
55:sin_out<=217;
56:sin_out<=225;
57:sin_out<=233;
58:sin_out<=239;
59:sin_out<=245;
60:sin_out<= 249;
61:sin_out <= 252;
62:sin_out <= 254;
63:sin_out <= 255;
default:sin_ out<=8 'bx;
endcase
end
endmodule
//clk:時鐘信號
//reset:復位信號
//square:方波輸出
module square( clk,reset,square_out) ;
input clk,reset;
output[7:0] square_ out;
reg[7:0] square_out;
reg[5:0] num;
reg reg_2;
always @( posedge clk or posedge reset)
begin
if( reset)
reg_2<=0; //當復位信號為1時,輸出為0
else if(num<31)//分頻
else
begin
num<=0;
reg 2<=~reg_ 2;
end
case(reg_2)
1:squae _out<=255;
0:square_out <=0;
endcase
end
endmodule
控制模式
//triangle_ctrl:三角波控制信號
//sin_ctrl:正弦波控制信號
//square_ctrl:方波控制信號
// triangle:三角波
//sin:正弦波
//square:方波
//wave_out:輸出波形
module control( triangle _ctrl ,sin_ ctrl, square_ctrl,triangle,sin, square,wave_out);
input triangle_ ctrl ,sin _ctrl ,square ctrl;
input[ 7:0] triangle,sin,square;
output[ 7:0] wave_out;
reg[ 7:0] wave_ out;
reg[2:0]sel;
reg[9:0] a,b,c,d,e;
always@( triangle_ctrl or sin_ctrl or square_ctrl or triangle or sin or square)
begin
sel={triangle_ctrl,sin_ctrl,sqpuare_ctrl }; //控制信號
case(sel)
3'b100:wave_out=triangle;
3'b010:wave_out=sin;
3'b001:wave_out=square;
3'b011: //方波和正弦波的線性組合
begin
a= triangle + sin;
wave_out=a[8:1];
end
3'b101: //三角波和方波的線性組合
begin
a = triangle + square;
wave_ out=a[8:1];
end
3 'b110: //三角波和正弦波的線性組合
begin
a= square + sin;
wave_ out=a[8:1];
end
3'b111: //三角波、正弦波和方波的線性組合
begin
a= triangle + square;
b=a + sin;
c=b[9:2];
d=a[9:4];
e=a[9:6];
a=c +d;
b=a +e;
wave_out=b[7:0];
end
defalt:wave_ out=8 'bx;
endcase
end
endmodule
//clk:系統時鐘信號
//reset:復位信號
//p:頻率調節信號,p=系統時鐘頻率/產生頻率/2
module div_ctrl(clk,p,clk_out,reset)
input clk,reset;
input[ 10:0] p ;
output clk_out;
reg clk_ out;
reg temp;
reg [10:0] count ;
always@(posedge clk or posedage reset)
begin
if( reset)clk_out<=0;//復位信號為1時,輸出為0
else if(temp==0)
begin
count<=p-1;
temp<=1;
end
else if(count==1)
begin
temp<=0;
clk_out<=~clk_out;
end
else
begin
count <= count-1;
end
end
endmodule
module signal_gennerator(clk,reset,k,triangle,sin,square,wave);
input clk,reset;
input[10:0] k;
input triangle,sin,square;
output[7:0] wave;
wire[7:0] triangle_1,sin_1,square_1;
wire clk_1;
div_ctrl U1(.clk(clk),.reset(reset),.p(k),.clk_(clk_1));
control U2(.triangle_ctrl(triangle),.sin_ctrl(sin),.square_ctrl(square),.triangle(triangle_1),
.sin(sin_1),.square(square_1),.wave_out(wave));
triangle U3(.clk(clk_1),.reset(reset),.triangle_out(triangle_1));
sin U4(.clk(clk_1),.reset(reset),.sin_out(sin_1));
square U5(.clk(clk_1),.reset(reset),.square_out(square_1));
endmodule
復制代碼
基于FPGA的信號發生器.docx
2018-12-5 23:02 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
15.97 KB, 下載次數: 41, 下載積分: 黑幣 -5
信號發生器
作者:
tyrl800
時間:
2019-9-7 22:42
還是DDS有效
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
国产精品美女久久久久aⅴ国产馆
|
久久精品日产第一区二区三区
|
中文字幕成人av
|
中文字幕人成人
|
国产精品福利在线观看
|
97久久精品午夜一区二区
|
午夜激情影院
|
日韩毛片在线免费观看
|
色综合美女
|
国产精品久久久久久久久久免费看
|
国产乱码精品一区二区三区五月婷
|
欧美一级淫片免费视频黄
|
国产黄色网址在线观看
|
国产精品久久亚洲7777
|
精品欧美一区二区精品久久久
|
久久久久久999
|
亚洲精品久久久久中文字幕二区
|
九九热在线观看视频
|
日韩成人影院
|
国产黄色av电影
|
91看片免费
|
五月精品视频
|
日韩一区二区在线播放
|
精品欧美黑人一区二区三区
|
国产成人精品久久
|
日韩中文字幕视频在线
|
亚洲国产精品福利
|
精品欧美一区二区在线观看视频
|
国产日韩精品一区
|
欧美日韩免费视频
|
久久精品免费一区二区
|
国产精品久久久久久久久久久久冷
|
亚洲免费在线
|
亚洲一区久久
|
日韩在线播放第一页
|
国内久久精品
|
久久精品视频在线播放
|
欧美日韩综合视频
|
伊人伊人伊人
|
精品九九九
|
www.蜜桃av
|