久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3062|回復: 1
收起左側

基于FPGA動態配置PLL輸出-源碼以及注意事項

[復制鏈接]
ID:522457 發表于 2021-9-24 09:03 | 顯示全部樓層 |閱讀模式
rom ip的配置
1、寬度1,深度144。

rom

rom


2、
P5{[H18[U30RUX[Y]NI2GZM.png

3、這里.mif輸出配置文件,配置文件可在配置altpll ip時獲取。
NS{X}GWCN[WYOK9Q_U(}]7G.png


altpll_recongig 配置
配置成一樣即可。
6($H$R[H5`94M}G9`Q4H)H6.png


alt_pll配置
其中rom所需的.mif文件從圖中框選處獲取,或者直接復制圖中序號為1的vga_pll.mif文件也可以(不同的頻率對應不同的mif文件)。
獲取不同pll輸出頻率.mif的具體步驟
K[RX])XYB_5Y595PV%[K.png
1、建立.mif文件
點擊file->New->memory Initialization File 設置 number of words 為144,word size 為1,保存即可,這里需要的時鐘數與.mif文件數對應即可。
2、獲取不同時鐘對應的.mif配置文件(數據)         
先配置好輸出的時鐘頻率(Output Clocks界面進行配置)轉到下圖所示的界面,點擊序號為2所在位置的browse ,找到剛剛保存的.mif,然后點擊Generate a Cinfiguration File即可。重復上述步驟可獲取不同的時鐘.mif配置文件。

源碼
module vgaclk_out(
        input clk,
        input rst,
        input[2:0] rom_swn,
        output  vga_clk,
        output reg write_from_rom=0,
        output reg reconfig=0,
        output busy,
        output pll_scandone

);

wire pll_scandataout,pll_areset,pll_configupdate,pll_scanclk,pll_scanclkena,write_rom_ena,pll_scandata;
wire clk_40M,clk_108M,clk_148_5M,clk_27_175M,clk_65M,clk_74_25M;
wire [7:0]rom_address_out;
wire pll_clkout,rom_out;
        pll_sw   u1(
                .clock(clk),
                .pll_areset_in(!rst),
                .pll_scandataout(pll_scandataout),
                .pll_scandone(pll_scandone),
                //.read_param(0),
                .reconfig(reconfig),//
                .reset(!rst),
                //.reset_rom_address(0),
                .rom_data_in(rom_out),
                .write_from_rom(write_from_rom),//
                //.write_param(0),
                //.counter_param(0),
                .pll_scandata(pll_scandata),
                //.counter_type(0),
                //.data_in(0),
                //.data_out(),
                .pll_areset(pll_areset),
                .pll_configupdate(pll_configupdate),
                .pll_scanclk(pll_scanclk),
                .pll_scanclkena(pll_scanclkena),
                .write_rom_ena(write_rom_ena),
                .rom_address_out(rom_address_out),
                .busy(busy)
                );
wire clk_out;
        vga_pll u2(
                .areset(pll_areset),
                .configupdate(pll_configupdate),
                .scanclk(pll_scanclk),
                .scanclkena(pll_scanclkena),
                .scandata(pll_scandata),
                .scandataout(pll_scandataout),
                .scandone(pll_scandone),
           .inclk0(clk),        
                .c0(vga_clk)
        );
//
   ROM108M u3(
           .address(rom_address_out),
           .clken(write_rom_ena),
           .clock(clk),
           .q(clk_108M)
           );
   ROM148_5M u4(
           .address(rom_address_out),
           .clken(write_rom_ena),
           .clock(clk),
           .q(clk_148_5M)
           );
        ROM74_25M u5(
           .address(rom_address_out),
           .clken(write_rom_ena),
           .clock(clk),
           .q(clk_74_25M)
        );
        ROM65M u6(
           .address(rom_address_out),
           .clken(write_rom_ena),
           .clock(clk),
           .q(clk_65M)
        );
        ROM40M u7(
           .address(rom_address_out),
           .clken(write_rom_ena),
           .clock(clk),
           .q(clk_40M)
        );
        ROM27_175M u8(
           .address(rom_address_out),
           .clken(write_rom_ena),
           .clock(clk),
           .q(clk_27_175M)
        );
        rom_sw u9(
                .clk(clk),
                .rst(rst),
                .rom_swn(rom_swn),
                .data1(clk_27_175M),
                .data2(clk_40M),
                .data3(clk_65M),
                .data4(clk_74_25M),
                .data5(clk_108M),
                .data6(clk_148_5M),
                .rom_out(rom_out)
          );

//用于控制write_from_rom信號和reconfig信號


reg[2:0] SW_IT=3'd0,SWN=3'd7;
//reg[13:0]cnt_sw=14'd0;//8190
always@(posedge clk or negedge rst)
begin
if(!rst)
begin
SW_IT<=0;
SWN<=7;
end
else
case(SW_IT)
3'd0 :begin
if(SWN!=rom_swn)
begin
SW_IT<=3'd1;
write_from_rom<=1;
end
end
3'd1:begin
SW_IT<=3'd2;
write_from_rom<=0;
end
3'd2:begin
if(busy==0)
begin
SW_IT<=3'd3;
reconfig<=1;
end
end
3'd3:begin
SW_IT<=3'd4;
reconfig<=0;
end
3'd4:begin
SW_IT<=3'd0;
SWN<=rom_swn;
end
endcase
end
//assign vga_clk=(rom_swn==SWN)?clk_out:0;
endmodule




rom_sw部分源碼(rom的選擇,不同時鐘的選擇)
  module rom_sw(
input clk,
input rst,
input[2:0] rom_swn,
input data1,
input data2,
input data3,
input data4,
input data5,
input data6,
output reg rom_out=0

);
always@(negedge clk)
begin
case(rom_swn)
  3'b000:rom_out<=data1;
  3'b001:rom_out<=data2;
  3'b010:rom_out<=data3;
3'b011:rom_out<=data4;
  3'b100:rom_out<=data5;
  3'b101:rom_out<=data6;
3'b110:rom_out<=data6;
3'b111:rom_out<=data6;
default: rom_out<=data6;
endcase
end

endmodule

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:739441 發表于 2024-1-29 14:12 | 顯示全部樓層
這個很重要哦   還好看到了,原理圖模式需要用得到
回復

使用道具 舉報

無效樓層,該帖已經被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩福利视频 | 精品一区二区三区四区在线 | 亚州综合在线 | 成人精品视频在线观看 | 亚洲狠狠爱| 日韩精品无码一区二区三区 | 一区欧美 | 欧美成人精品一区二区男人看 | 日韩中文字幕 | 毛片a级 | 喷水毛片 | 国产精品美女久久久久aⅴ国产馆 | 一区二区三区电影网 | 激情一区二区三区 | 精品综合 | 农村妇女毛片精品久久久 | 国产精品二区三区在线观看 | 亚洲在线视频 | av在线三级| 欧美日韩在线一区 | 999久久久免费精品国产 | 国产欧美一区二区三区久久人妖 | 在线日韩欧美 | 最近中文字幕在线视频1 | 男女羞羞视频在线观看 | 91av视频在线免费观看 | 久久久精品影院 | 精品视频一区二区三区在线观看 | 成人不卡 | 欧美一区二区三区在线看 | 精久久久 | 亚洲综合无码一区二区 | 国产一区二区三区四区五区加勒比 | 日韩欧美专区 | av免费网址 | 四虎影院在线观看免费视频 | 国产精品久久久久久久久久 | 一区二区三区在线 | 一级黄色片一级黄色片 | 国产黄色麻豆视频 | 美女爽到呻吟久久久久 |