DE1-SoC开发板连接与配置指南

需积分: 9 1 下载量 141 浏览量 更新于2024-08-17 收藏 8.04MB PPT 举报
"DE1-SoC连接与配置教程,包括USB Blaster II、UART-to-USB和电源接口的设置,以及DE1-SoC开发板的使用介绍,适用于Altera SoC FPGA的学习和硬件实验。" DE1-SoC是Terasic Technologies推出的一款基于Altera FPGA的开发平台,它提供了SoC FPGA设计和实验的功能。这个开发板配备了多种接口,如USB Blaster II用于FPGA编程和调试,UART-to-USB接口用于串行通信,以及电源接口以供电给整个系统。 快速入门阶段,用户需要安装Altera Quartus II和Altera SoC Embedded Design Suite这两款开发设计软件,它们是进行FPGA和SoC设计的基础。开发板附带的光盘包含了原理图、设计示例等资源,方便用户学习和参考。在实验室环境中,所有实验范例都可以在指定的`lab`目录下找到,而相关的驱动和工具则位于`tool`目录。 DE1-SoC开发板上的模式选择开关(MSEL[4:0])用于设定FPGA的工作模式。默认模式为AS,即FPGA由EPCQ配置。FPPx32和FPPx16模式下,FPGA由HPS(Hard Processor System)软件配置,在这两种模式下,Linux可以通过不同的启动方式加载,如U-Boot或直接从SD卡启动。 连接设定部分,首先需要安装USB Blaster II驱动,以便通过USB接口下载FPGA代码和调试HPS/FPGA。UART-to-USB驱动的安装则用于实现串口通信,通常设置串口终端工具的速度为115200,连接类型为Serial,端口为COMx。这样,用户就可以在DE1-SoC上运行Linux系统,并通过MicroSD卡来存储和加载操作系统。 SoC FPGA设计流程涵盖了从概念到实现的完整步骤,包括处理器(如双核ARM Cortex-A9,带有NEON媒体处理引擎和丰富的内置外围设备)和硬核内存控制器的设计。该流程涉及了软硬件协同设计,从高层次系统定义,到逻辑综合、布局布线,再到最终的硬件验证和系统集成。 DE1-SoC不仅提供了全面的硬件资源,还支持完整的SoC FPGA设计和实验过程,是学习和开发Altera SoC FPGA项目的一个理想平台。用户可以借此深入理解SoC FPGA的工作原理,掌握从软件到硬件的综合设计技能。

import torch import torch.nn as nn import numpy as np import matplotlib.pyplot as plt from torch import autograd """ 用神经网络模拟微分方程,f(x)'=f(x),初始条件f(0) = 1 """ class Net(nn.Module): def __init__(self, NL, NN): # NL n个l(线性,全连接)隐藏层, NN 输入数据的维数, # NL是有多少层隐藏层 # NN是每层的神经元数量 super(Net, self).__init__() self.input_layer = nn.Linear(1, NN) self.hidden_layer = nn.Linear(NN,int(NN/2)) ## 原文这里用NN,我这里用的下采样,经过实验验证,“等采样”更优。更多情况有待我实验验证。 self.output_layer = nn.Linear(int(NN/2), 1) def forward(self, x): out = torch.tanh(self.input_layer(x)) out = torch.tanh(self.hidden_layer(out)) out_final = self.output_layer(out) return out_final net=Net(4,20) # 4层 20个 mse_cost_function = torch.nn.MSELoss(reduction='mean') # Mean squared error 均方误差求 optimizer = torch.optim.Adam(net.parameters(),lr=1e-4) # 优化器 def ode_01(x,net): y=net(x) y_x = autograd.grad(y, x,grad_outputs=torch.ones_like(net(x)),create_graph=True)[0] return y-y_x # y-y' = 0 # requires_grad=True).unsqueeze(-1) plt.ion() # 动态图 iterations=200000 for epoch in range(iterations): optimizer.zero_grad() # 梯度归0 ## 求边界条件的损失函数 x_0 = torch.zeros(2000, 1) y_0 = net(x_0) mse_i = mse_cost_function(y_0, torch.ones(2000, 1)) # f(0) - 1 = 0 ## 方程的损失函数 x_in = np.random.uniform(low=0.0, high=2.0, size=(2000, 1)) pt_x_in = autograd.Variable(torch.from_numpy(x_in).float(), requires_grad=True) # x 随机数 pt_y_colection=ode_01(pt_x_in,net) pt_all_zeros= autograd.Variable(torch.from_numpy(np.zeros((2000,1))).float(), requires_grad=False) mse_f=mse_cost_function(pt_y_colection, pt_all_zeros) # y-y' = 0 loss = mse_i + mse_f loss.backward() # 反向传播 optimizer.step() # 优化下一步。This is equivalent to : theta_new = theta_old - alpha * derivative of J w.r.t theta if epoch%1000==0: y = torch.exp(pt_x_in) # y 真实值 y_train0 = net(pt_x_in) # y 预测值 print(epoch, "Traning Loss:", loss.data) print(f'times {epoch} - loss: {loss.item()} - y_0: {y_0}') plt.cla() plt.scatter(pt_x_in.detach().numpy(), y.detach().numpy()) plt.scatter(pt_x_in.detach().numpy(), y_train0.detach().numpy(),c='red') plt.pause(0.1)

2023-02-15 上传

import numpy as np import pandas as pd import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ["SimHei"] # 单使用会使负号显示错误 plt.rcParams['axes.unicode_minus'] = False # 把负号正常显示 # 读取北京房价数据 path = 'data.txt' data = pd.read_csv(path, header=None, names=['房子面积', '房子价格']) print(data.head(10)) print(data.describe()) # 绘制散点图 data.plot(kind='scatter', x='房子面积', y='房子价格') plt.show() def computeCost(X, y, theta): inner = np.power(((X * theta.T) - y), 2) return np.sum(inner) / (2 * len(X)) data.insert(0, 'Ones', 1) cols = data.shape[1] X = data.iloc[:,0:cols-1]#X是所有行,去掉最后一列 y = data.iloc[:,cols-1:cols]#X是所有行,最后一列 print(X.head()) print(y.head()) X = np.matrix(X.values) y = np.matrix(y.values) theta = np.matrix(np.array([0,0])) print(theta) print(X.shape, theta.shape, y.shape) def gradientDescent(X, y, theta, alpha, iters): temp = np.matrix(np.zeros(theta.shape)) parameters = int(theta.ravel().shape[1]) cost = np.zeros(iters) for i in range(iters): error = (X * theta.T) - y for j in range(parameters): term = np.multiply(error, X[:, j]) temp[0, j] = theta[0, j] - ((alpha / len(X)) * np.sum(term)) theta = temp cost[i] = computeCost(X, y, theta) return theta, cost alpha = 0.01 iters = 1000 g, cost = gradientDescent(X, y, theta, alpha, iters) print(g) print(computeCost(X, y, g)) x = np.linspace(data.Population.min(), data.Population.max(), 100) f = g[0, 0] + (g[0, 1] * x) fig, ax = plt.subplots(figsize=(12,8)) ax.plot(x, f, 'r', label='Prediction') ax.scatter(data.Population, data.Profit, label='Traning Data') ax.legend(loc=2) ax.set_xlabel('房子面积') ax.set_ylabel('房子价格') ax.set_title('北京房价拟合曲线图') plt.show()

2023-06-04 上传
2023-06-01 上传
2023-06-01 上传